zoukankan      html  css  js  c++  java
  • JavaWeb防注入知识点(一)

    一、防sql注入办法

    在apache commons-lang(2.3以上版本)中为我们提供了一个方便做转义的工具类,主要是为了防止sql注入,xss注入攻击的功能。总共提供了以下几个方法:

    1.escapeSql 提供sql转移功能,防止sql注入攻击,例如典型的万能密码攻击' ' or 1=1 ' '

    StringBuffer sql = new StringBuffer("select key_sn,remark,create_date from tb_selogon_key where 1=1 ");
    		if(!CommUtil.isEmpty(keyWord)){
    			sql.append(" and like '%" + StringEscapeUtils.escapeSql(keyWord) + "%'");
    		}

    2.escapeHtml /unescapeHtml  转义/反转义html脚本

    System.out.println(StringEscapeUtils.escapeHtml("<a>dddd</a>"));   
    //输出结果为:<a>dddd</a>
    System.out.println(StringEscapeUtils.unescapeHtml("<a>dddd</a>"));   
    //输出为:<a>ddd</a>
    3.escapeJavascript/unescapeJavascript 转义/反转义js脚本

    System.out.println(StringEscapeUtils.escapeJavaScript("<script>alert('1111')</script>"));   
    //输出为:<script>alert('111')</script>
    4.escapeJava/unescapeJava 把字符串转为unicode编码

    System.out.println(StringEscapeUtils.escapeJava("中国"));   
    //输出为:用escapeJava方法转义之后的字符串为:/u4E2D/u56FD/u5171/u4EA7/u515A
    二、防js注入办法

    如第一部分所说,可以使用commons-lang包后台转换实现;

    还可以用 HTML 编码任何网站用户输入的数据,如:<%=Html.Encode(feedback.Message)%> 使用 HTML 编码一个字符串的含意是什么呢?使用 HTML 编码字符串时,危险字符如 < 和 > 被替换为 HTML 实体,如 < 和 >。所以,当使用 HTML 编码字符串 <script>alert("Boo!")</script> 时,它将转换为 <script>alert("Attack!")</script>。浏览器在解析编码的字符串时不再执行 JavaScript 脚本。而是显示无害的页面。

  • 相关阅读:
    通俗的讲解下傅立叶分析和小波分析之间的关系
    Kalman滤波
    K-L变换和 主成分分析PCA
    c语言字符串库函数#include<string.h>
    c语言字符类别测试库函数#include<ctype.h>
    c语言之extern关键字
    陈正冲老师讲c语言之声明和定义的区别
    陈正冲老师讲c语言之const关键字
    陈正冲老师讲c语言void关键字
    陈正冲老师讲c语言之内存的申请malloc() 和释放free()
  • 原文地址:https://www.cnblogs.com/archermeng/p/7537202.html
Copyright © 2011-2022 走看看