sha*_*ane 3 php mysqli sql-injection
在php中,有什么区别,哪个更好,为什么,使用mysqli.
我有一个用真正的转义字符串编写的整个项目,是否有必要转换为面向对象的预处理语句?
从程序员的角度来看,手动转义值和PDO实现的参数化/准备语句之间的区别在于分离程度,自动化和责任转移.
随着*_escape_string开发人员必须确保所有的值:
*_escape_string函数传递*_escape_string函数仅用于转义字符串文字值.如果开发人员有纪律来跟踪每个参数的处理,这可以很好地工作.但它往往变得更加复杂,因此容易出错,语句越复杂.
如果只有一个参数缺少正确的处理或处理,那么该语句将受到SQL注入的攻击.说实话,Stack Overflow上有很多案例表明这种手动技术更容易出错,因为很容易错过上述一点.
与此相反,PDO通过在语句中使用占位符来提供一个抽象层.参数值分别传递,PDO负责正确的处理和处理.开发人员所要做的就是使用占位符准备语句,然后使用实际值执行预准备语句.
现在哪一个更好?显然后者是PDO变体,因为它不易出错,而且更清洁.开发人员可以考虑和处理的事情较少,因为它现在由PDO完成.