每天18,000次MySQL注入尝试:停止尝试

JSc*_*rry 6 php mysql security

这个问题不是针对SQL注入攻击的保护.StackOverflow已经多次回答了这个问题,我已经实现了这些技术.这是关于停止尝试.

最近我的网站受到大量注射攻击.现在,我捕获它们并返回一个静态页面.

这是我的URL的样子:

/products/product.php?id=1
Run Code Online (Sandbox Code Playgroud)

这就是攻击的样子:

/products/product.php?id=-3000%27%20IN%20BOOLEAN%20MODE%29%20UNION%20ALL%20SELECT%2035%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C%27qopjq%27%7C%7C%27ijiJvkyBhO%27%7C%7C%27qhwnq%27%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35%2C35--%20
Run Code Online (Sandbox Code Playgroud)

我确信这不仅仅是一个糟糕的链接或胖指法打字,所以我不想将它们发送到概述页面.我也不想在我的网站上使用任何提供静态页面的资源.

我正在考虑让页面死掉die().这种方法有什么问题吗?或者是否有我可以使用PHP设置的HTML返回代码更合适?

编辑:

基于以下几条评论,我查找了如何返回"找不到页面".icktoofay的Stack Overflow 回答建议使用404然后使用die(); - 机器人认为没有页面甚至可能会消失,并且没有更多的资源用于显示页面未找到的消息.

header("HTTP/1.0 404 Not Found");
die();
Run Code Online (Sandbox Code Playgroud)

Bil*_*win 6

过滤掉可能的注入尝试是mod_security的用途.

配置它以识别应用程序的合法请求可能需要相当多的工作.

另一种常见方法是在检测到恶意客户端时阻止它们的IP地址.