apache-commons-lang StringEscapeUtils对SQL、HTML、XML、JavaScript、Java 特殊字符的转义和还原
来源:互联网 发布:ip摄像头集中软件 编辑:程序博客网 时间:2024/05/06 15:58
应该说,您即使没有处理 HTML 或 JavaScript 的特殊字符,也不会带来灾难性的后果,但是如果不在动态构造 SQL 语句时对变量中特殊字符进行处理,将可能导致程序漏洞、数据盗取、数据破坏等严重的安全问题。网络中有大量讲解 SQL 注入的文章,感兴趣的读者可以搜索相关的资料深入研究。
虽然 SQL 注入的后果很严重,但是只要对动态构造的 SQL 语句的变量进行特殊字符转义处理,就可以避免这一问题的发生了。来看一个存在安全漏洞的经典例子:
SELECT COUNT(userId) FROM t_user WHERE userName='"+userName+"' AND password ='"+password+"';
以上 SQL 语句根据返回的结果数判断用户提供的登录信息是否正确,如果 userName 变量不经过特殊字符转义处理就直接合并到 SQL 语句中,黑客就可以通过将 userName 设置为 “1' or '1'='1”绕过用户名/密码的检查直接进入系统了。
所以除非必要,一般建议通过 PreparedStatement 参数绑定的方式构造动态 SQL 语句,因为这种方式可以避免 SQL 注入的潜在安全问题。但是往往很难在应用中完全避免通过拼接字符串构造动态 SQL 语句的方式。为了防止他人使用特殊 SQL 字符破坏 SQL 的语句结构或植入恶意操作,必须在变量拼接到 SQL 语句之前对其中的特殊字符进行转义处理。Spring 并没有提供相应的工具类,您可以通过 jakarta commons lang 通用类包中(spring/lib/jakarta-commons/commons-lang.jar)的 StringEscapeUtils 完成这一工作:
package com.baobaotao.escape;import org.apache.commons.lang.StringEscapeUtils;public class SqlEscapeExample { public static void main(String[] args) { String userName = "1' or '1'='1"; String password = "123456"; userName = StringEscapeUtils.escapeSql(userName); password = StringEscapeUtils.escapeSql(password); String sql = "SELECT COUNT(userId) FROM t_user WHERE userName='" + userName + "' AND password ='" + password + "'"; System.out.println(sql); }}
0 0
- apache-commons-lang StringEscapeUtils对SQL、HTML、XML、JavaScript、Java 特殊字符的转义和还原
- 使用apache common lang包下的StringEscapeUtils来对html,sql等特殊字符进行转义
- commons-lang 包,特殊字符处理 StringEscapeUtils
- java对html转移的语言反编译-org.apache.commons.lang3包有个StringEscapeUtils
- StringEscapeUtils类转义与反转义(对js sql html xml等代码进行转义)
- 对html字符进行转义和反转义---工具类StringEscapeUtils
- java.lang.NoClassDefFoundError: org.apache.commons.lang.StringEscapeUtils
- html和xml传特殊字符的时候需要转义
- Java-html代码和特殊字符转义
- as3实现XML中特殊字符的转义还原
- java实现HTML标签转义和反转义(StringEscapeUtils)
- 关于commons-lang.jar包中的StringEscapeUtils类的转义与反转义
- xml对特殊字符的处理(字符转义)
- html xml 转义符号 java 转换 HTML 字符 java 特殊字符转义字符串
- ant运行findbugs出错:java.lang.NoClassDefFoundError: org/apache/commons/lang/StringEscapeUtils
- 关于xml 和 html 的转义字符
- HTML和XML常用的转义字符
- html和xml的转义字符
- 存数海量数据时的一个途径
- Redis的日志系统
- 初始化顺序
- ajax在同一个页面获取Post的数据
- 关于Google Map 的小demo
- apache-commons-lang StringEscapeUtils对SQL、HTML、XML、JavaScript、Java 特殊字符的转义和还原
- Xcode6 提交版本 The IPA is invalid,it does not include a Payload directory
- 华为:工作感想(2)
- iOS中的 URL的encode
- 第13周项目1-4
- 类簇
- 简易的WIN32对话框程序框架
- HTML DOM入门
- my notes