什么是SQL注入
SQL注入是指将刻意构造的参数传递给SQL语句,使SQL语句不按预期的行为执行,从而暴露一些敏感信息或产生未预期的结果。
如上图所示,用于进行登录时,将用户名改成username AND 1=1 /*,由于/*后面的内容被注释了,于是后台在判断是否密码是否正确时并没有比较密码,所以任何账号都可以直接登录。
SQL注入场景
如何预防SQL注入
- 预编译SQL
a) 使用JDBC时,执行SQL应使用PreparedStatement;
b) 使用MyBatis时,配置文件中参数应使用#拼接,避免使用$符拼接; - 使用白名单方式验证用户输入数据
- 对用户输入数据进行转义
对SQL字符串进行转义可以调用common-lang提供的接口StringEscapeUtils.escapeSql()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。