SQL注入

SQL注入

攻击者在HTTP请求中注入恶意的SQL代码,服务器使用参数构建数据库SQL命令时,恶意SQL被一起构造,并在数据库中执行。 用户登录,输入用户名test,密码 'or '1'='1,如果此时使用参数构造的方式,就会出现:

select * from user where name = 'zach' and password = '' or '1'='1'

不管用户名和密码是什么内容,使查询出来的用户列表不为空。其防护手段主要为:

  • Web端进行有效性检验,限制字符串输入的长度。
  • 服务端不用拼接SQL字符串,使用预编译的PrepareStatement,进行有效性检验,过滤SQL需要的参数中的特殊字符,比如单引号、双引号等。

Links