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