zoukankan      html  css  js  c++  java
  • Fortify漏洞之Portability Flaw: Locale Dependent Comparison

      继续对Fortify的漏洞进行总结,本篇主要针对 Portability Flaw: Locale Dependent Comparison 漏洞进行总结,如下:

    1Portability 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() 时将返回 "Tu0130TLE",其中 "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 的区域设置。

  • 相关阅读:
    asp.net mvc 学习
    ms sqlserver 清除数据库日志脚本
    DB、ETL、DW、OLAP、DM、BI关系结构图
    日期维度(周一为每周第一天)
    关于C#操作Excel,复制Sheet的记录
    ms sqlserver 登录失败 错误:4064
    通过sqlserver sa密码修改windows操作系统密码
    ssas 为绑定指定的大小太小,导致一个或多个列值被截断
    ExpandoObject的使用
    【慕课网实战】Spark Streaming实时流处理项目实战笔记三之铭文升级版
  • 原文地址:https://www.cnblogs.com/meInfo/p/9141889.html
Copyright © 2011-2022 走看看