2016-07-06 69 views
0

是否有任何自动SQL注入预防PHP库。例如,检查传入的参数,如GET,POST,并在继续执行站点代码之前检查可能的SQL攻击特征码。自动SQL注入预防PHP库

例如像: 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

您可以使用预处理语句防止SQL注入 – Jens

+0

阅读[PDO](http://php.net/manual/en/book.pdo.php)和[Prepared statements](http://php.net) /manual/en/pdo.prepared-statements.php) –

+0

强烈建议存储过程对SQL注入。 – rhazen

回答

0

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

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

只需输入正常形式的用法名称即可。他的名字是Brian O'Connor ......好吧,他似乎无法使用你的程序。

如果用户想搞乱数据库,库需要进行语义检查。为了进行这种语义检查,图书馆还需要知道实际预期的数据类型。在上面提到的例子中,当期待一个名字时,你可能确定“drop table”不是想要的输入,但是为每个输入定义所需要的规则会花费很多开销。

如果你总是正确对待用户数据(通过使用准备好的语句或你的数据库API的转义/引用函数),你的表中会有一些奇怪的数据(如果有人真的试图注入你的sql)这不会伤害你我猜。

-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 & A,您的应用程序应该是安全的。

+0

* HTML * -escape与SQL *注入有关吗? –

+0

是否永远?如果恶意使用表单怎么办? – unixmiah

+0

如果恶意使用无形式会怎么样? –