我正在使用我没有创建的网站。看来我正在处理涉及通过URL字符串查询数据库的DDoS和/或SQL注入攻击。我目前正在调查查询中添加“斜杠”的方法,据我所知,如果基于表单,攻击会有所帮助:
http://php.net/manual/en/function.addslashes.php
如果这不起作用,我很好奇是否有办法简单地限制每个会话,每个IP或任何其他可能至少减缓攻击的变量执行查询的频率。提前谢谢。
答案 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查询字符串中。
如果您使用sql-injection标记检查其他问题,则很容易找到示例。其中一个最佳答案是How can I prevent SQL injection in PHP?
我写了一篇关于此的热门演讲:SQL Injection Myths and Fallacies。
答案 1 :(得分:1)
顺便说一下,从您的问题中不清楚,并且几乎不可信,但如果您的网站真的运行通过GET请求收到的整个SQL查询 - 没有任何操作或软件会有所帮助。