脚本宝典收集整理的这篇文章主要介绍了php – 如何防止二阶SQL攻击?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
准备好的陈述是否仍然可以防范只要我确定我一直使用它们?或者我是否需要采取更多预防措施?我还容易受到XSS攻击吗?
如果你们都不介意的话,我还有一些问题,只是出于好奇.
>是否可以使用仅包含字母数字字符,空格和短划线的sql注入?喜欢select * From name =’$some_VARiable’.我见过的所有例子似乎都需要其他字符,如分号,引号或双短划线.
>我已经阅读了许多sql示例,其中可以将unsafe变量设置为形成另一个语句,例如
$foo = "foo'); INSERT INTO users (name) VALUES ('hi"; $bar = ("INSERT INTO users (name) VALUES ('$foo')");
但我刚刚测试过,MysqL_query甚至不允许多个语句.我知道您仍然可以在1个语句中进行注射,但是我可以确认您在PHP中没有多个语句的问题吗?
注入只能在sql引擎作为命令读取数据时发生.在一个非常简单的情况下,如果您在数据中允许未转义的“字符,并且您的数据由sql中的字符封装”,则表明您已启用sql注入攻击.
防止任何sql注入的关键是在进入sql语句时正确地验证和转义传入数据.一种简单的方法是使用预处理的语句,为您处理它,允许您安全地将参数传递给sql语句.
每个数据库库都有自己的转义或使用预准备语句的方式.在MysqL和PHP中,当你使用MysqLi库时,你有MysqLi_real_escaPE_string(),它应该在每个时间段使用.
PDO库有它自己的方式,但如果我没记错的话,准备好的语句是PDO的重要组成部分 – 100%的时间使用它们,你就可以了.
以上是脚本宝典为你收集整理的php – 如何防止二阶SQL攻击?全部内容,希望文章能够帮你解决php – 如何防止二阶SQL攻击?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。