原标题:杭州蓝韵网络 | 作为站长,你有必要了解的网站攻击技术—SQL注入
在Web安全领域中,SQL注入可以说是无人不知,无人不晓。哪怕是没接触过Web安全的站长,也多多少少听过这词,它是目前被利用得最多的漏洞之一。
什么是SQL注入?
SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL。而SQL注入则是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句,传递给Web服务器,进而传给数据库服务器以执行数据库命令。
如果Web应用程序的开发人员对用户所输入的数据或cookie等内容不进行过滤或验证(即存在注入点)就直接传输给数据库,就可能导致拼接的SQL被执行,获取对数据库的信息以及提权,发生SQL注入攻击。
SQL的方法原理
SQL注入攻击的核心在于让Web服务器执行攻击者期望的SQL语句,以便得到数据库中的感兴趣的数据或对数据库进行读取、修改、删除、插入等操作,达到其不怀好意的目的。
那么如何让Web服务器执行攻击者的SQL语句呢?SQL注入的常规套路在于将SQL语句放置于Form表单或请求参数之中提交到后端服务器,后端服务器如果未做输入安全校验,直接将变量取出进行数据库查询,则极易中招。例如:
对于一个根据用户ID获取用户信息的接口,后端的SQL语句一般是这样:
其中,$id就是前端提交的用户id,而如果前端的请求是这样:
其中,请求参数id转义后就是1 or 1=1,如果后端不做安全过滤直接提交数据库查询,SQL语句就变成了:
其结果是把用户表中的所有数据全部查出,达到了黑客泄露数据的目的。
上面只是一个非常简单的示例,真实的SQL注入攻击,它的参数构造和SQL语句远比这个要复杂得多,但是原理都是一致的。
怎么样预防SQL注入
如果你使用的是第三方CMS程序(如:discuz!,DedeCMS,ECshop等),请将程序升级至最新版本。
过滤用户输入的数据。默认情况下,应当认为用户的所有输入都是不安全的。
在网页代码中需要对用户输入的数据进行严格过滤。
部署 Web 应用防火墙。
对数据库操作进行监控。
返回搜狐,查看更多
责任编辑: