检测到跨站请求伪造 (CSRF) 时应发回啥响应
Posted
技术标签:
【中文标题】检测到跨站请求伪造 (CSRF) 时应发回啥响应【英文标题】:What Response Should Be Sent Back a When Cross-Site Request Forgery (CSRF) is Detected检测到跨站请求伪造 (CSRF) 时应发回什么响应 【发布时间】:2014-06-22 02:28:15 【问题描述】:当检测到跨站请求伪造 (CSRF) 时,我应该发回什么响应?
有一个我无法掌握的扫描工具说我的一个页面没有受到CSRF
的保护。但它是。我发回的回复是一个普通的202
,带有“请求无法处理”这句话。就是这样,没有任何信息被发送回攻击者,我记录了这次尝试。但是这个软件说它仍然容易受到CSRF
的影响。我可以自己轻松地运行测试并弄清楚,但扫描和测试之间的时间很长,而且我无法获得相同的软件,这就是我问 *** 的原因,所以我希望可以在下一次计划的扫描中将其淘汰.我正在考虑发回404
或410
的状态代码,而不是202
。 http://www.cfgears.com/index.cfm/2009/8/11/cfheader-404-status-codes-and-why-you-shouldnt-use-them
当检测到CSRF
时,您建议发回什么?
【问题讨论】:
显然,当另一个问题不在同一个 StackExchance 站点上时,您不能将一个问题标记为重复。看这里:security.stackexchange.com/questions/8446/… @iKnowKungFoo 我认为makerofthings7
与their answer 是对的。
【参考方案1】:
怎么样:
401 未经授权 要么 403禁止
【讨论】:
【参考方案2】:403 Forbidden
因为用户在技术上被授权访问该站点,它只是被禁止的特定操作(没有正确 CSRF 令牌的 HTTP POST)。
Web 服务器可能会返回 403 Forbidden HTTP 状态代码以响应客户端对网页或资源的请求,以表明可以访问并理解该请求,但拒绝采取任何进一步的操作。状态码 403 响应是 Web 服务器被配置为拒绝访问(出于某种原因)客户端请求的资源的结果。
请记住,攻击者将无法读取此响应,并且在大多数情况下,用户将看不到消息或 HTTP 响应,因为 CSRF 攻击并非旨在让受害者明显意识到它正在发生.如果你有一个有效的 CSRF 机制,你的网站无论如何都不太可能受到这种方式的攻击——防御也是威慑。
【讨论】:
值得注意的是,当用户长时间打开选项卡时,这是一个常见错误,例如他们正在处理某事。如果他们的会话过期,并且他们从另一个选项卡重新登录,他们将在从旧选项卡提交表单时收到此错误。所以如果它很重要,请确保表格没有丢失! 我会说 100 次中的 99 次当你的 CSRF 保护触发它实际上是在开发中的某个地方,当开发人员在 API 上玩弄并忘记了 CSRF。在这种情况下,提供信息丰富的响应可能很有价值。以上是关于检测到跨站请求伪造 (CSRF) 时应发回啥响应的主要内容,如果未能解决你的问题,请参考以下文章