2

我正在使用一个不是我创建的网站。看来我正在处理涉及通过 URL 字符串查询数据库的 DDoS 和/或 SQL 注入攻击。我目前正在研究向查询“添加斜杠”的方法,如果基于表单,我被告知这将有助于攻击:

http://php.net/manual/en/function.addslashes.php

如果这不起作用,我很好奇是否有一种方法可以简单地限制每个会话、每个 IP 或任何其他可能至少会减慢攻击速度的变量执行查询的频率。先感谢您。

4

2 回答 2

6

是的,您可以在 MySQL 中限制每个用户每小时的使用量:http:
//dev.mysql.com/doc/refman/5.6/en/user-resources.html

但是,大多数 Web 应用程序对所有应用程序用户使用一个MySQL用户名。因此,这可能只会限制您的整个网站。

addlashes 函数不是防止 SQL 注入的正确解决方案。每个 MySQL API 都包含一个更合适的转义函数,例如mysqli_real_escape_string()PDO::quote()

但更好的是使用带有查询参数的准备好的语句,而不是将变量转义和连接到 SQL 查询字符串中。

标记检查其他问题,则很容易找到示例。最好的答案之一是如何防止 PHP 中的 SQL 注入?

我为此写了一篇流行的演示文稿:SQL 注入神话和谬误

于 2013-10-21T13:44:15.023 回答
1
  1. 如何防止 PHP 中的 SQL 注入?
  2. 抱歉,但首先您需要了解什么是分布式DOS 攻击。因为每个会话限制和每个 IP 都不会有任何帮助。您可能还希望确认它是否真的是 DOS 攻击,而不仅仅是在简单的垃圾邮件机器人下会减慢网站速度的糟糕代码。
  3. 您不妨确认一下,如果它真的打针的话。可能有一些问题已经在询问有关注入的问题,其中只有愚蠢的垃圾邮件机器人填写公开访问的 Web 表单。

坦率地说,你必须对你的问题更加确定。否则,没有直接的高雅答案将有任何实际帮助。

顺便说一句,您的问题并不清楚,而且几乎不可信,但如果您的站点真的运行通过 GET 请求接收到的整个 SQL 查询 - 没有任何操作或软件会有所帮助。

于 2013-10-21T13:45:08.633 回答