当前位置:   article > 正文

xss漏洞的修复建议/方法_xss漏洞修复

xss漏洞修复

1. html encoding


跨站点脚本漏洞最有效的解决方案是对用户受影响输出进行 HTML encoding。

应用程序应该对:直接源自用户输入的值、可能受用户影响的值、受用户影响的数据存储库值(数据库、日志、文件等)或可能具有的任何其他信息的任何输出进行编码

这些信息在传输中应该执行净化:替换掉非字母数字的字符,确保数据是展示给用户,而不是在用户的浏览器中被执行

HTML Encoding 可以通过实施自定义 HTML encoder 或者实施第三方 HTML encoder class

潜在的风险非字母数字字符包括

< > ( ) [ ] { } / \ " ' ` ' (Unicode Quote) , . * % & # ; ! ~ * + - = | $ : ? \t (TAB) \n (CrLf-Enter)

代码例子

  1. public static String htmlEntityEncode(String s) {
  2. int len = s.length();
  3. StringBuilder buf = new StringBuilder(len);
  4. for (int i = 0; i < len; i++) {
  5. char c = s.charAt(i);
  6. if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z' || c >= '0' && c <= '9') {
  7. buf.append(c);
  8. } else {
  9. buf.append("&#").append((int) c).append(";");
  10. }
  11. }
  12. return buf.toString();
  13. }


  • 2 验证用户输入 
    
    
    系统应验证所有输入。
    输入验证应在服务器端执行,使用postive的方法(将允许的输入限制为出现在白名单中的字符),而不是negative的方法(防止使用出现在黑名单中的字符)。
    positive 的方法有助于程序员避免使用恶意字符导致的潜在缺陷。
    
    验证输入时,应按以下顺序执行以下验证:
    
    检查实际输入是否存在;如果 Input 字段是非可选的,则不允许 null 或空输入。
    强制输入大小限制:确保输入长度在预期的大小范围内(最大和最小都要考虑)。
    检查输入类型:确保接收到的类型是预期的类型,并将输入存储在指定类型的变量(字符串变量)中。
    检查输入值范围:验证输入值是否在逻辑兼容值范围的限制范围内。
    清理特殊字符:除非有特定的功能需要,否则输入字符集应限制为 [a-z]、[A-Z] 和 [0-9]。
    验证输入符合逻辑。(输入年龄的话不能为负数吧。。。)
    不要将用户输入嵌入客户端脚本:最初从用户输入派生的值不应直接用作 HTML 脚本 (JS/VBS)、脚本标记或任何其他 HTML 标记或事件的一部分。
    
    写入日志的源自用户的值应在其文档之前进行类似的编码,以防止对通过 Web 界面查看日志的管理用户执行脚本攻击。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/150669
推荐阅读
相关标签
  

闽ICP备14008679号