2012-01-02 65 views
10

我正在研究我经常听到的东西,当在JSF 2.0中执行web应用程序时,您已经受到防护,无法使用crossite - 脚本和 - 请求伪造。从SO post以下摘录证实了这一点:JSF 2.0如何防止CSRF

在JSF 2.0这已经通过使用一个长期和自动生成的强值,而不是一个,而可预测的序列值,从而使其成为一个健壮CSRF预防改善。

有人可以提供一些这方面的更多细节?这个自动生成的值如何防止CSRF?谢谢!

+0

https://www.packtpub.com/mapt/book/application_development/9781782176466/9/ch09lvl1sec84/jsf-security-notes – 2018-02-21 19:29:48

回答

11

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

因为它不能被猜到。因此,攻击者无法以攻击网站的形式在隐藏域中对其进行硬编码(除非目标站点存在XSS漏洞,因此可以直接通过XSS方式直接获取该值)。如果该值对JSF无效,则攻击网站提交的表单将不会被处理,而是生成一个ViewExpiredException。请注意,攻击者仍然需要获取会话ID,以便它可以通过jsessionid URL属性传回,因此原本“较弱”的CSRF保护仍需要一些XSS漏洞来获取会话ID。

毕竟,我的印象是你完全不理解CSRF是什么;如果你了解CSRF是什么,那么答案就是自我解释。在这种情况下,请检查以下问题:Am I under risk of CSRF attacks in a POST form that doesn't require the user to be logged in?

5

需要记住的一件事是,JSF 2.0中的CSRF保护是隐含的,并且仅对POST请求有效。

在JSF 2.2会有这个更明确的支持。我在这里简要解释一下:http://arjan-tijms.omnifaces.org/p/jsf-22.html

+0

所以对于GET请求? JSF 2.0可以做什么? – oikonomopo 2016-05-11 14:58:53