什么是SQL注入

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

SQL注入场景

如何预防SQL注入

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

参考:
SQL Injection Prevention


水一水
39 声望5 粉丝

总结经验,提升自己