尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第八节:网关-注入攻击与预防

【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第八节:网关-注入攻击与预防 【架构师从入门到进阶】第五章DNSCDN网关优化思路——第八节网关-注入攻击与预防SQL注入攻击的原理攻击者获取数据库表结构预防SQL注入的方法这篇文章我们来看SQL注入。SQL注入攻击的原理SQL注入攻击的原理呢我们来简单说一下它就是通过攻击者在http的请求当中注入恶意的SQL命令比如说把某个表进行删除那么服务器在用请求参数构造数据库的命令的时候恶意的SQL语句也被一起构造了我们来写一个例子。也就是说比如说我们要请求一个URL这URL后面比如说要查询一个user然后查询user呢后面需要跟上一个username。然后这个username攻击者就写一个“‘name’; drop table user;”这个命令然后就提交到提交到数据库的。然后服务器在构造这个查询SQL语句的时候可能就“select * from user where username ‘name’; drop table user;”这么写了。那么不仅执行了正常的业务逻辑还执行了后面的这个删除表结构的代码这个就是SQL注入。攻击者获取数据库表结构SQL注入攻击者需要对被攻击的数据库有所了解才能进行。攻击者获取数据库表结构的表结构信息有以下几种。第一种是开源代码就是说我们公司的一些系统。是根据开源代码进行搭建的比如说好多免费的论坛呀博客呀。那么这个时候网站的数据库结构就是公开的攻击者可以随便获取到。还有一个很重要的就是和我们对用户的提示有关比如说有的网站的一些报错信息会直接将错误信息展示在页面上。比如说一个500错误后面跟着一大堆堆栈的信息还有一个表名那么这样的话呢也会让攻击者了解到表结构。所以错误信息的提示一定要规划一下。我们内部系统的错误提示可以随意一些不用那么注意但是从网关进行出口的一些错误的提示一定要封装好最好是用状态码加上我们自定义的错误提示。预防SQL注入的方法然后预防SQL注入的方法呢我们前面也讲过主要思路就是让攻击者猜不到我们数据库的信息。我们可以通过两种方式一种是消毒。也就是攻击者在给我们提交请求参数的时候我们把这些敏感字给它进行一个提示。他写了一个drop或者delete我们就提示“输入的参数非法”要么就是把他的drop直接替换掉替换成安全字符比如说替换成空格替换成星号等等都是可以的。还有一种就是参数绑定现在的这种数据访问层框架基本上都支持参数绑定。参数绑定是什么就是说攻击者比如说他写了这么一个参数“‘name’; drop table user;”那么会在我们的SQL里面呢把后面的这个当成是一整个参数并不会去执行它单独的一个一个SQL。这样的话这个攻击者的这个攻击呢就无效。
返回列表