Fortify漏洞之Portability Flaw: Locale Dependent Comparison
继续对Fortify的漏洞进行总结,本篇主要针对 Portability Flaw: Locale Dependent Comparison 漏洞进行总结,如下:
1、Portability Flaw: Locale Dependent Comparison
1.1、产生原因:
对可能与区域设置相关的数据进行比较时,应指定相应的区域设置。
示例 1:以下示例尝试执行验证,以确定用户输入是否包含 <script> 标签。
...
public String tagProcessor(String tag){
if (tag.toUpperCase().equals("SCRIPT")){
return null;
}
//does not contain SCRIPT tag, keep processing input
...
}
...
关于上述代码的问题是:在使用不带区域设置的java.lang.String.toUpperCase() 时,其将使用默认的区域设置规则。使用土耳其区域设置"title".toUpperCase() 时将返回 "T\u0130TLE",其中 "\u0130" 是 "LATIN
CAPITAL LETTER I WITH DOT ABOVE" 字符。这会导致生成意外结果,例如,在示例 1 中,会导致此验证无法捕获
"script" 一词,从而可能造成跨站脚本攻击漏洞。
1.2、修复方案:
为了防止出现此问题,请始终确保指定默认区域设置,或者指定可以接受这些字符(如toUpperCase())并带有 API 的区域设置。
示例 2:以下示例通过手动方式将区域设置指定为 toUpperCase() 的参数。
import
java.util.Locale;
...
public String tagProcessor(String tag){
if (tag.toUpperCase(Locale.ENGLISH).equals("SCRIPT")){
return null;
}
//does not contain SCRIPT tag, keep processing input
...
}
...
示例 3:以下示例使用了函数java.lang.String.equalsIgnoreCase() API
以防止出现此问题。
...
public String tagProcessor(String tag){
if (tag.equalsIgnoreCase("SCRIPT")){
return null;
}
//does not contain SCRIPT tag, keep processing input
...
}
...
因为 equalsIgnoreCase() 会更改与Character.toLowerCase() 和Character.toUpperCase() 类似的内容,所以可以防止此问题。这涉及到使用来自UnicodeData 文件(由 Unicode 联盟维护的 Unicode 字符数据库的一部分)的信息创建这两种字符串的临时标准格式。即使这可能会导致这些字符在被读取时以不可读的方式呈现出来,但却能够在独立于区域设置的情况下进行比较。
1.3、预防该漏洞的开发规范:
1、请始终确保指定默认区域设置,或者指定可以接受这些字符(如toUpperCase())并带有 API 的区域设置。
Fortify漏洞之Portability Flaw: Locale Dependent Comparison的更多相关文章
- Portability Flaw Locale Dependent Comparison
Portability Flaw Locale Dependent Comparison [问题描述] 该问题涉及String的toUpperCase()方法.具体通过例子演示相关现象. public ...
- Fortify漏洞之Portability Flaw: File Separator 和 Poor Error Handling: Return Inside Finally
继续对Fortify的漏洞进行总结,本篇主要针对 Portability Flaw: File Separator 和 Poor Error Handling: Return Inside Fina ...
- Fortify漏洞之Cross-Site Scripting(XSS 跨站脚本攻击)
书接上文,继续对Fortify漏洞进行总结,本篇主要针对XSS跨站脚步攻击漏洞进行总结,如下: 1.Cross-Site Scripting(XSS 跨站脚本攻击) 1.1.产生原因: 1. 数据通过 ...
- Fortify漏洞之Insecure Randomness(不安全随机数)
继续对Fortify的漏洞进行总结,本篇主要针对 Insecure Randomness 漏洞进行总结,如下: 1.Insecure Randomness(不安全随机数) 1.1.产生原因: 成弱 ...
- Fortify漏洞之Denial of Service: Regular Expression
继续对Fortify的漏洞进行总结,本篇主要针对 Denial of Service: Regular Expression 漏洞进行总结,如下: 1.Denial of Service: Reg ...
- Fortify漏洞之 Log Forging(日志伪造)
继续对Fortify的漏洞进行总结,本篇主要针对 Log Forging(日志伪造)的漏洞进行总结,如下: 1.1.产生原因: 在以下情况下会发生 Log Forging 的漏洞: 1. 数据从一个不 ...
- Fortify漏洞之 Privacy Violation(隐私泄露)和 Null Dereference(空指针异常)
继续对Fortify的漏洞进行总结,本篇主要针对 Privacy Violation(隐私泄露) 和 Null Dereference(空指针异常) 的漏洞进行总结,如下: 1.1.产生原因: Pri ...
- Fortify漏洞之Dynamic Code Evaluation: Code Injection(动态脚本注入)和 Password Management: Hardcoded Password(密码硬编码)
继续对Fortify的漏洞进行总结,本篇主要针对 Dynamic Code Evaluation: Code Injection(动态脚本注入) 和 Password Management: Har ...
- Fortify漏洞之Open Redirect(开放式重定向)
继续对Fortify的漏洞进行总结,本篇主要针对 Open Redirect(开放式重定向) 的漏洞进行总结,如下: 1.1.产生原因: 通过重定向,Web 应用程序能够引导用户访问同一应用程序内 ...
随机推荐
- curl抓取页面时遇到重定向的解决方法
用php的curl抓取网页遇到了问题,为阐述方便,将代码简化如下: <?php function curlGet($url) { $ch = curl_init(); curl_setopt($ ...
- 监控指标 TP99 TP999 含义
TP=Top Percentile,Top百分数,是一个统计学里的术语,与平均数.中位数都是一类. TP50.TP90和TP99等指标常用于系统性能监控场景,指高于50%.90%.99%等百分线的情况 ...
- 单点登录(SSO)工作原理
单点登录(SSO)工作原理 一.单点登录的介绍 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次 ...
- 转载:Java对Base64处理的细节
https://baike.baidu.com/item/base64/8545775?fr=aladdin import java.util.Base64; 对于标准的Base64: 加密为字符串使 ...
- cmd 连接oracle
第一步: sqlplus/nolog 第二步: conn 数据库名/密码@ip:端口/database: conn bill:/orcl 如果是连接不上. 报错信息为 Oracle ORA-0103 ...
- 多个进程间通信之Queue
多个进程间通信之Queue 实现数据传递 #!coding:utf-8 from multiprocessing import Process, Queue import os,time,random ...
- PCL贪婪投影三角化算法
贪婪投影三角化算法是一种对原始点云进行快速三角化的算法,该算法假设曲面光滑,点云密度变化均匀,不能在三角化的同时对曲面进行平滑和孔洞修复. 方法: (1)将三维点通过法线投影到某一平面 (2)对投影得 ...
- PDF阅读器关闭“使用手型工具阅读文章”功能
1.问题描述 某些PDF文件打开时,光标显示的手型工具里面有个箭头,一点击鼠标左键,就跳转到下一页了.给阅读带来很多不便. 2.原因 因为这类PDF文档中带有"文章"(articl ...
- python实践项目八:生成随机试卷文件
描述:匹配美国50个州的首府. 下面是程序需要完成的任务: • 创建35 份不同的测验试卷. • 为每份试卷创建50 个多重选择题,次序随机. • 为每个问题提供一个正确答案和3 个随机的错误答案,次 ...
- Qt编译理解(Qt 对 C++ 的扩展主要是3个方面)
沉沉的黑夜都是白天的前奏.--郭小川 舍弃IDE或qmake.cmake等工具的束缚,通过几个例子, 一步步从标准 C++ 的编译过渡到 Qt 的编译. Qt 对 C++ 的扩展主要是3个方面: 1) ...