10

这里有很多方法可以保护您的代码免受 SQL 注入攻击。但我需要的是如何记录 sql 注入攻击,以便我们可以将他(攻击者用户)添加到 blacklist-users 数据库中。

我在这里需要的是一种函数,如果有 sql 注入,它将返回 true。

<?php
if(isset($_POST['username'])){
// need a function here which will return true if there's
// a sql injection else false
}
?>
4

3 回答 3

6

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

请注意,尽管 PHP-IDS 不会检测到所有 SQL 注入问题。不可能自动做到这一点。您仍然需要正确处理您的查询。

于 2012-04-30T12:46:42.580 回答
3

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

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

学会parameterised queries正确使用,SQL 注入不是你需要考虑的事情。在 PHP 中,您可以使用mysqliPDO库来实现这一点。这里有很多问题可以解决这个问题,您可以通过谷歌搜索“参数化查询”或“准备好的语句”获得更多教程

于 2012-04-30T12:44:27.803 回答
2

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

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

于 2012-04-30T12:51:17.227 回答