3

我在某处读到 JSF 框架使用的视图 ID 具有充当请求令牌并因此挫败 CSRF 的令人愉快的副作用。有人可以告诉我这是否意味着我不必从编程的角度做任何事情(即)。作为程序员,如果我使用 JSF 就不用担心 CSRF 了?

4

3 回答 3

4

JSF 确实具有针对CSRF的“内置”保护javax.faces.ViewState。在 JSF 1.x 上,这可能只是“太容易”猜到了。这已为 JSF 2.1 修复。另请参阅JSF impl issue 812JSF spec issue 869

您主要关心的应该是XSSSQL 注入。成功的 XSS 攻击将成为保证成功的 CSRF 攻击的来源。为避免 XSS,请确保您使用(重新)显示所有用户控制的输入,h:outputText而不是使用“普通”模板文本。SQL 注入不一定会导致潜在的 CSRF 漏洞,但它会泄漏或损坏敏感数据。为避免这种情况,请确保您使用的是使用命名查询(JPA、Hibernate 等)的可靠 ORM 框架,或者当您使用“plain vanilla”JDBC 时,请确保您正在使用PreparedStatement而不是Statement一直使用.

于 2010-04-09T11:54:50.663 回答
0

这是有保证的吗?JSF 的一些实现使用可以被攻击者猜到的顺序 id。

这是一篇描述 Sun JSF-RI 生成顺序视图 id 的文章,而不是更接受的 Java SecureRandom:

http://seamframework.org/Documentation/CrossSiteRequestForgery

于 2010-04-19T18:44:47.377 回答
-1

抱歉,前几天我错了“我告诉我的 JSF 应用程序没有报告任何 CSRF 问题”。但是现在我想告诉你,JSF 没有针对 CSRF 的“内置”保护。我已经使用 CSRFTester 工具进行了测试,它表明我的 JSF 应用程序容易受到 CSRF 攻击。而且我还想告诉您,所有 Java EE 应用程序都容易受到 CSRF 攻击。我发现保护应用程序免受 CSRF 攻击的一种可能方法是生成随机令牌并将其附加到 URL。谢谢!!

于 2010-10-26T09:41:27.933 回答