php最有效防御sql注入攻击的方式

摘要:长期以来,web的安全性存在着巨大的争议与挑战。其中,sql注入就是一种常见的一种攻击方法,开发人员普遍的做法就是不停的过滤,转义参数,可是我们php大法天生弱类型的机制,总是让黑客有机可乘,绕过防御与防御总 ...

        长期以来,web的安全性存在着巨大的争议与挑战。其中,sql注入就是一种常见的一种攻击方法,开发人员普遍的做法就是不停的过滤,转义参数,可是 我们php大法天生弱类型的机制,总是让黑客有机可乘,绕过防御与防御总是在明争暗斗。

        记得很久以前看到过一位大牛说过的一句话,在一个程序中,60%的代码都应该是在进行各种防御。
        其实,现在来看,防御sql注入其实并不需要进行各种参数过滤,以下将开启干货模式!
        PHP5.x开始引入了一种新的mysql操作方式-----mysqli,在php中也有一项相应的操作方式叫做PHP预处理。采用面向对象的方式来进行参数化绑定操作,由于对数据库操作的模式驱动不同,因此可以非常有效的防御sql注入。
        首先,我们先来看一段代码例子
      
              上面是php预处理中一个非常简单的例子,它内置的其他函数能很方便我们的开发速度,那么看到这里,很多人可能还是不明白,有人可能想问,你这个绑定参数是不是还是在拼凑sql语句?如果是拼凑语句,那还不是会产生注入吗
   这就要从他的操作原理来解释了,其实它在prepare操作中,就已经在数据库中,执行了语句,以后的绑定参数和执行,只不过是再传递数据进去而已,所以根本不会和sql语句拼接,也就自然不会将危险代码执行。因此,在这种模式下sql注入就能很有效的被防御了。
        在php预处理的类中有很多很好用的操作,具体将会在以后的文章中为大家总结一些常用的php预处理的开发语句。
posted @ 2016-06-14 11:01  小凯全栈开发  阅读(453)  评论(0编辑  收藏  举报