这里有很多方法可以保护您的代码免受SQL注入攻击。但是我需要的是如何记录sql注入攻击,这样我们就可以将他(攻击者-用户)添加到黑名单用户数据库中。
这里我需要的是一种函数,如果有sql注入,它将返回true。
<?php
if(isset($_POST['username'])){
// need a function here which will return true if there's
// a sql injection else false
}
?>发布于 2012-04-30 12:46:42
您可以使用PHP-IDS检测安全攻击(不仅仅是SQL注入)并添加自定义行为。在我的例子中,我在每个请求开始时运行PHP。如果检测到问题,我将登录到数据库,向用户返回一个泛型错误消息,并生成die()。
但是请注意,PHP不会检测到所有的SQL注入问题。不可能自动这么做。您仍然需要正确地处理查询。
发布于 2012-04-30 12:44:27
编辑:这个答案是在问题被显著改变之前做出的。虽然它仍然有效,但已不再涉及“任择议定书”的具体情况。
SQL注入是最容易补救的web应用程序漏洞之一。识别潜在攻击、记录攻击以及维护和管理具有拒绝使用功能的用户黑名单的问题空间是一个更复杂的编程练习。
学习正确地使用parameterised queries,而SQL并不是您需要考虑的问题。在PHP中,您可以使用mysqli或PDO库来实现这一点。这里有大量的问题可以解决这个问题,还有更多的教程,你可以通过谷歌搜索“参数化查询”或“准备好的语句”。
发布于 2012-04-30 12:51:17
不要试图为像这样严重的问题自己设计一个解决方案。可能会回来咬你在you_know_where。
相反,尝试从服务器上查看查询的类型,并请求用户在此基础上作出决定。(为了得到reqs)对于POST请求,正如https://stackoverflow.com/a/10383937/561269所说,您可以使用它。
https://stackoverflow.com/questions/10383779
复制相似问题