应用软件安全编程--07当比较 local相关的数据时,指定恰当的 local

当locale没有明确指定的时候,使用 locale相关的方法处理与 local相关的数据会产生意想不到的 结果。编程语言标识符、协议关键字以及 HTML 标签通常会指定 Locale.ENGLISH 作为一个特定的 locale。 在不同的 locale环境中运行程序可能会导致意外的程序行为,甚至允许攻击者绕过输入过滤 器。由于这些原因,在比较数据时,如果可能与locale方法相关,则应指定相应的 locale。

例如下面程序代码:

java 复制代码
public  class  Example  {

public    static   void   main(String[]    args){

System.out.println("Title".toUpperCase());

 }

 }

在英文 locale 环境下:

TITLE

然而,大多数语言使用的拉丁字母i的大写形式是I,但土耳其语言环境是个例外:有一个点的i的大写形式也有一个点(1),没有点I大写形式没有点(I)。 在土耳其 locale(API 2006)会产生下面预期之外的结果:

TiTLE

许多程序只使用依赖于locale方法来输出信息,如果 locale相关的数据,程序没有显示设置 locale, 则可以安全地依赖于默认的 locale 设置。

对于指定恰当的local 的情况,示例1给出了不规范用法(Java 语言)示例。示例2给出了规范用法 (Java 语言)示例

java 复制代码
示例1:

public static void processTag(String tag){

if (tag.toUpperCase(),equals("SCRIPT")){

return;

 }

// Process tag

 }

在英语 locale中 "script" 大写转换成"SCRIPT", 而在土耳其 locale 环境中,将"script"大写转换 成"SCRiPT"。

java 复制代码
示例2:

public static void process Tag(String tag){

if (tag.toUpperCase(Locale.ENGLISH).equals("SCRIPT")){

return;

 }

//  Process  tag

 }

代码中将 locale 设置为英文,从而避免意外的情况。

相关推荐
许彰午41 分钟前
14_Java泛型完全指南
java·windows·python
智慧物业老杨1 小时前
司法绿色通道下的物业纠纷数智化解决方案——基于“三优先“机制的全流程技术落地实践
java·django
2601_961194021 小时前
2026初级会计实务公式总结大全|计算题公式手册PDF
java·spring·eclipse·pdf·tomcat·hibernate
做个文艺程序员1 小时前
第1篇:K8s 核心概念精讲:Pod、Deployment、Service 与 Namespace——Java 开发者快速上手指南
java·云原生·容器·kubernetes·容器编排
小欣加油3 小时前
leetcode3751 范围内总波动值I
java·数据结构·c++·算法·leetcode
代码中介商4 小时前
C++左值与右值:核心判断法则详解
开发语言·c++
闪电悠米4 小时前
黑马点评-Redisson-01_why_redisson
java·服务器·网络·数据库·缓存·wpf
星轨zb4 小时前
LangChain4j 集成 Spring Boot:会话记忆 NPE 的根源与 ChatMemoryProvider 正确配置
java·spring boot·后端·langchain4j
JAVA9654 小时前
JAVA面试-并发篇 05-并发包AQS队列实现原理是什么
java·开发语言·面试
JAVA面经实录9174 小时前
RocketMQ全套学习知识手册
java·kafka·rabbitmq·rocketmq