我正在研究我经常听到的东西,当你在JSF 2.0中使用webapp时,你已经受到了保护,不受跨文件的攻击 - 请求伪造。以下SO post的摘录证实了这一点:
在JSF 2.0中,通过使用长而强的自动生成值而不是可预测的序列值来改进这一点,从而使其成为一个强大的CSRF预防。
有人可以提供更多详细信息吗?这种自动生成的价值如何阻止CSRF?谢谢!
答案 0 :(得分:11)
此自动生成的值如何阻止CSRF?
因为无法猜到。因此,攻击者无法以攻击网站的形式在隐藏字段中对其进行硬编码(除非目标站点具有XSS漏洞,因此可以通过XSS手段直接获取该值)。如果该值对JSF无效,则攻击网站提交的表单将不会被处理,而是生成ViewExpiredException
。请注意,攻击者仍然需要获取会话ID,以便可以通过jsessionid
URL属性传回,因此最初“弱”的CSRF保护仍然需要一些XSS漏洞来获取会话ID。 / p>
毕竟,我的印象是你完全不了解CSRF是什么;如果您了解CSRF是什么,答案就是自我解释。在这种情况下,请检查以下问题:Am I under risk of CSRF attacks in a POST form that doesn't require the user to be logged in?
答案 1 :(得分:6)
要记住的一件事是JSF 2.0中的CSRF保护是隐式的,仅对POST请求有效。
在JSF 2.2中,将会有更明确的支持。我在这里简要解释一下:http://arjan-tijms.omnifaces.org/p/jsf-22.html