3

假设我发现我的 Web 应用程序收到了明显是 SQL 注入攻击或类似攻击的请求。我写了一个简短的测试来检查“顽皮”字符串的请求变量。如果我找到一个,我应该用什么代码回复?

我正在考虑返回“403 Forbidden”并且没有内容,但我不确定。

4

3 回答 3

5

我认为这403 Forbidden意味着不应访问该资源。

因此,我会400 Bad Request改用。毕竟,只要用户提出合法请求,他们就可以访问该页面。

于 2013-01-22T13:45:14.340 回答
3

http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
对我来说,“400:错误请求”似乎是最合乎逻辑的选择。

编辑:也许它更多地取决于上下文。

如果确实无法继续您的脚本,请返回 400 或 404 代码。

在所有其他情况下,当您的代码“检测到”恶意尝试时,不应通知用户(黑客)。您的验证应该是检测无效输入的类型,而不是恶意尝试。

唯一的例外是蛮力攻击(有关如何防止这些攻击的更多信息,请参见防止网站上的蛮力登录)。

例如:
如果您的表单包含用户名文本框,并且用户(黑客)尝试使用某种引用的 SQL 语句登录/注册,则您的验证应自动声明“用户名无效”。

另一方面,出于登录目的,您应该使用链接中所述的选项保护您的应用程序免受暴力攻击。

于 2013-01-22T13:44:54.447 回答
2

如果您能够识别请求的问题并且他们正在要求允许的东西,只是以一种偷偷摸摸的方式,您应该能够防止它们造成任何损害并处理它们。但是如果请求没有意义,400 Bad Request 可能是最好的选择。

于 2013-01-22T13:48:10.707 回答