如何记录尝试进行SQL注入的人


How to log someone trying to make sql injection

这里有很多方法可以保护代码免受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
}
?>

您可以使用 PHP-IDS 来检测安全攻击(不仅仅是 SQL 注入)并添加自定义行为。就我而言,我在每个请求开始时运行PHP-IDS。如果检测到问题,我会登录到数据库,向用户返回一般错误消息并 die()。

请注意,PHP-IDS 不会检测到所有 SQL 注入问题。不可能自动执行此操作。您仍然需要正确处理查询。

编辑:这个答案是在问题发生重大变化之前做出的。虽然仍然有效,但它不再涉及OP的具体情况。

SQL 注入是最容易修复的 Web 应用程序漏洞之一。识别潜在攻击、记录攻击以及维护和管理具有拒绝使用功能的用户黑名单的问题空间是一项编程练习,要复杂得多许多数量级。

学会正确使用parameterised queries,SQL注入不是你需要考虑的事情。在PHP中,您可以使用mysqliPDO库来实现此目的。这里有大量的问题可以解决这个问题,还有更多教程可以从谷歌搜索"参数化查询"或"预准备语句"中获得。

不要试图为如此严重的问题制定一个本土的解决方案。可能会回来咬你you_know_where。

相反,尝试从服务器日志中查看用户发出的查询和请求的类型,并据此做出决定。(对于 GET 请求)。对于 POST 请求,正如 https://stackoverflow.com/a/10383937/561269 所说,您可以使用它。