1、SQL注入式攻击
所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。比如:攻击者在用户名字和密码输入框中输入"'或'1'='1"之类的内容。最后得到的SQL命令可能变成:
SELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1'
这时,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。
2、防范SQL注入式攻击
只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。
⑴ 对于动态构造SQL查询的场合,可以使用下面的技术:
第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。
第二:删除用户输入内容中的所有连字符。
第三:对于用来执行查询的数据库帐户,限制其权限。
⑵ 用存储过程来执行所有的查询。
⑶ 限制表单或查询字符串输入的长度。
⑷ 检查用户输入的合法性,确信输入的内容只包含合法的数据。
⑸ 将用户登录名称、密码等数据加密保存。
⑹ 检查提取数据的查询所返回的记录数量。