sql注入原理及其防范

众所周知,SQL是一门解释性语言。

SQL注入是指攻击者把sql命令插入web表单提交的字符串以达到使服务器执行恶意sql命令的目的

此漏洞算是最有效,攻击者最喜欢采用的主动攻击方式了,漏洞的起因是sql的功能问题,可以说出身很悲惨了,作为一种解释型语言,在运行的时候是由一个运行时组件解释代码并且执行了其中包含的指令的语句,正是这种执行方式导致了一系列注入骚操作的出现。

比如你是一个仓库里的机器,你的工作是找到某一个物品,然后放在传送带上去加工,这时需要有人对它发出指令,等用户填好后再去执行。
可以将要执行前的表单比作一道填空题,比如从a货架的a区,取下箱子1,放传送带上,(其中加粗字体是填空题中空余的位置,是由发布人物的人提供的)于是你照此执行了,一条命令完成。
但是,如果填入内容没有规则限制,假如是**:a货架的a区,取下箱子1然后丢给我** 然后忽略后面的其余指令。

他的数据是程序员写的代码和用户提交的数据共同组成的,在开发过程中,没有过滤特殊字符,绑定变量,导致攻击者可以以各种姿势,各种骚思路,在你的服务器里七进七出,或者通过报错获取有用信息。这种就要考验后端过滤做的怎么样了,反之则被攻击者随意操纵站点的数据库,传统的安全产品在与各位攻击者的大脑的对抗中明显有些力不从心。

我们除了在安全产品协助之外,还要从根本考虑问题,那就是对用户输入数据做出判断,过滤不合法输入。

继续机器人的故事:因为机器人无法区分你指定的动作和动作执行的对象,为了避免恶意的人为利用,我们需要将指令和数据用机器人容易区分的方法来分开(废话!)。我们将数据和指令分开来发送,所以机器人要先从空的from里读取指令,确认箱子要在哪,并且记下来,然后操作你的人只需提供箱子的位置和名字,然后在不许这些值被当作指令的前提下,去将数据和指令结合起来去执行,如果瞎指挥的话,机器人将会一脸懵逼:劳资记忆中没有丢箱子忽略后面信息这个指令!你确定输入对了?

由此一来成功过滤了错误命令,及时防止出现不必要的损失。

发布了16 篇原创文章 · 获赞 1 · 访问量 5975

猜你喜欢

转载自blog.csdn.net/weixin_44398914/article/details/94065516
今日推荐