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