JSF 2.0如何防止CSRF



我正在研究我经常听到的东西,当你在JSF 2.0中做一个web应用程序时,你已经受到了跨站点脚本和请求伪造的保护。以下摘录自SO的帖子证实了这一点:

在JSF 2.0中,通过使用长而强的自动生成值而不是相当可预测的序列值来改进这一点,从而使其成为一个健壮的CSRF预防。

有人能提供更多的细节吗?这个自动生成的值如何防止CSRF?谢谢!

这个自动生成的值如何防止CSRF ?

因为它不能被猜出来。因此攻击者无法以攻击网站的形式将其硬编码在隐藏字段中(除非目标网站有XSS漏洞,因此可以简单地通过XSS手段直接获得该值)。如果该值对JSF无效,那么从攻击网站提交的表单将不会被处理,而是生成一个ViewExpiredException。请注意,攻击者仍然需要获得会话ID,以便它可以通过jsessionid URL属性传递回来,因此最初的"弱"CSRF保护仍然需要一些XSS漏洞来获取会话ID。

毕竟,我的印象是你根本不明白什么是CSRF;如果你了解CSRF是什么,答案是不言自明的。在这种情况下,请检查以下问题:我是否有在不要求用户登录的POST表单中受到CSRF攻击的风险?

要记住的一点是,JSF 2.0中的csrf保护是隐式的,只对POST请求有效。

在JSF 2.2中将对此提供更明确的支持。我在这里简要地解释了一下:http://arjan-tijms.omnifaces.org/p/jsf-22.html

最新更新