自动SQL注入预防php库

时间:2016-07-06 05:27:40

标签: php mysql wordpress mysqli

是否有自动SQL注入防护PHP库。类似的,检查传入的参数,如GET,POST,并检查可能的SQL攻击签名,然后再继续执行网站代码。

例如: http://www.example.com/index.php?page_id=')/的 /联合/ / ALL /的 /选择/ / NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL ,NULL,NULL - / ** / uHkS

在上面的URL中,我在GET参数中传递了sql语法,PHP库将在项目代码开始执行之前检查GET,POST参数,如果有任何SQL攻击,则会立即存在请求。抛出异常消息。

2 个答案:

答案 0 :(得分:0)

正如其他评论中所写:没有库可以通过请求自动检测对数据库的攻击。<​​/ p>

如果有数据传入可能会对数据库操作造成威胁,立即取消请求将是非常糟糕的。

只需使用带有输入名称的普通表格即可。他的名字叫Brian O'Connor ......好吧,他似乎无法使用你的程序。

如果用户想搞乱你的数据库,那么库需要进行语义检查才能看到。要进行此语义检查,库还需要知道实际预期的数据类型。在上面提到的例子中,当你想要一个名字时,你可能会确定“丢弃表”不是想要的输入,但是定义每个输入所需的规则会有很多开销。

如果你总是正确对待userdata(通过使用预处理语句或database-api的转义/引用函数),你的表中会有一些奇怪的数据(如果有人真的试图给你注入sql)但是我猜不会伤害你。

答案 1 :(得分:-2)

您可以使用PDOPrepared Statements在数据库端执行某些操作,也可以在服务器端脚本中清除POSTGET数据。结束。

$safe_data=filter_input(INPUT_GET, 'comment', FILTER_SANITIZE_SPECIAL_CHARS);

因为此函数一次只能处理一个GET参数,所以您可能希望编写一个函数来创建一个新的数组(例如$SAFE_GET),它遍历GET参数并一次性消毒它们。

或者,您可以在php.ini文件中设置一个指令,默认为清除HTML安全的所有输入:

filter.default="special_chars"

我不认为有PHP库可以清理它;你必须小心处理数据。

对于POSTGET,请清理用户输入。使用所有类型的Fuzz Testing并执行Q&amp; A,您的申请应该是安全的。