SQL注入式攻击
2016-12-23 本文已影响41人
helinyu
SQL注入式攻击:攻击者吧SQL命令插入到Web表单的域或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。
(在某些中表单中,用户输入的内容直接用来构造动态SQL命令,或作为存储过程输入参数,这类表单特别容易受到SQL注入式攻击)
例如:对于一个站点http://www.thesite.com/News/details.jsp?id=2 的页面。
id是查询参数,通过id获取显示某条信息。
在jsp程序中,用SQL语句读取该条新闻:“select * from news where id= ”+id ,正常执行的话,参数是2极客,但是当非法用户将id的参数变为id=2,drop database news信息,可是后买你这条语句是非法的。
由于SQL注入攻击利用的是合法的SQL语句,是的这种攻击不能够被防火墙检查出来,而且由于对任何基于SQL语言标准的数据库都适用,所以危害特别大。尽管如此,目前防止SQL注入攻击的方法非常多,具体而言,有以下一些方法:
(1)利用表单输入的内容构造SQL命令之前,对用户输入进行验证(利用正则表达式等)与替换。例如,替换单引号,机吧所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。
(2)避免使用解释程序,攻击者一般借以执行非法命令。
(3)对查询字符串、用户登录名称、密码等进行加密处理;
(4)删除用户输入内容中的所有连字符,防止攻击者顺利获得访问权限。
(5)对于用来执行查询的数据库账户,限制其权限。
(6)用存储过程来执行所有查询
(7)检查用户输入的合法性,确信输入的内容只包含合法的数据。数据检查应当那在客户端和服务器端都执行。
(8)检查提取数据的查询所返回的记录数量。