假设我发现我的 Web 应用程序收到了明显是 SQL 注入攻击或类似攻击的请求。我写了一个简短的测试来检查“顽皮”字符串的请求变量。如果我找到一个,我应该用什么代码回复?
我正在考虑返回“403 Forbidden”并且没有内容,但我不确定。
假设我发现我的 Web 应用程序收到了明显是 SQL 注入攻击或类似攻击的请求。我写了一个简短的测试来检查“顽皮”字符串的请求变量。如果我找到一个,我应该用什么代码回复?
我正在考虑返回“403 Forbidden”并且没有内容,但我不确定。
我认为这403 Forbidden
意味着不应访问该资源。
因此,我会400 Bad Request
改用。毕竟,只要用户提出合法请求,他们就可以访问该页面。
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
对我来说,“400:错误请求”似乎是最合乎逻辑的选择。
编辑:也许它更多地取决于上下文。
如果确实无法继续您的脚本,请返回 400 或 404 代码。
在所有其他情况下,当您的代码“检测到”恶意尝试时,不应通知用户(黑客)。您的验证应该是检测无效输入的类型,而不是恶意尝试。
唯一的例外是蛮力攻击(有关如何防止这些攻击的更多信息,请参见防止网站上的蛮力登录)。
例如:
如果您的表单包含用户名文本框,并且用户(黑客)尝试使用某种引用的 SQL 语句登录/注册,则您的验证应自动声明“用户名无效”。
另一方面,出于登录目的,您应该使用链接中所述的选项保护您的应用程序免受暴力攻击。
如果您能够识别请求的问题并且他们正在要求允许的东西,只是以一种偷偷摸摸的方式,您应该能够防止它们造成任何损害并处理它们。但是如果请求没有意义,400 Bad Request 可能是最好的选择。