防止通过URL字符串提交的基于DDoS的MySQL查询的方法

时间:2013-10-21 13:37:13

标签: mysql security sql-injection ddos botnet

我正在使用我没有创建的网站。看来我正在处理涉及通过URL字符串查询数据库的DDoS和/或SQL注入攻击。我目前正在调查查询中添加“斜杠”的方法,据我所知,如果基于表单,攻击会有所帮助:

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

如果这不起作用,我很好奇是否有办法简单地限制每个会话,每个IP或任何其他可能至少减缓攻击的变量执行查询的频率。提前谢谢。

2 个答案:

答案 0 :(得分:6)

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

但是,大多数网络应用程序为所有应用程序用户使用单个 MySQL 用户名。所以这可能会限制整个网站。

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

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

如果您使用标记检查其他问题,则很容易找到示例。其中一个最佳答案是How can I prevent SQL injection in PHP?

我写了一篇关于此的热门演讲:SQL Injection Myths and Fallacies

答案 1 :(得分:1)

  1. How can I prevent SQL injection in PHP?
  2. 抱歉,首先您需要了解分布式 DOS攻击是什么。因为每个会话限制,每个IP都不会提供任何帮助。您可能还希望确认它是否真的是DOS攻击,而不仅仅是编写错误的代码会在简单的垃圾邮件机器人之下减慢网站速度。
  3. 您可能希望确认,如果它真的是注射的话。有些问题可能已经在询问注入哪些只是愚蠢的垃圾邮件机器人填充公开访问的网络表单。
  4. 坦率地说,你的问题必须要多得多。否则,没有任何直接的高雅答案会有任何实际的帮助。

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