【安全】SQL注入

什么是SQL注入

SQL注入是指将刻意构造的参数传递给SQL语句,使SQL语句不按预期的行为执行,从而暴露一些敏感信息或产生未预期的结果。
image.png
如上图所示,用于进行登陆时,将用户名改为username AND 1=1 /*,因为/*后面的内容被注释了,因而后台在判断是否密码是否正确时并无比较密码,因此任何帐号均可以直接登陆。html

SQL注入场景

如何预防SQL注入

  1. 预编译SQL
    a) 使用JDBC时,执行SQL应使用PreparedStatement;
    b) 使用MyBatis时,配置文件中参数应使用#拼接,避免使用$符拼接;
  2. 使用白名单方式验证用户输入数据
  3. 对用户输入数据进行转义
    对SQL字符串进行转义能够调用common-lang提供的接口StringEscapeUtils.escapeSql()

参考:
SQL Injection Preventionspa

相关文章
相关标签/搜索