JSF2 ViewStateID可以重用吗?

时间:2012-09-26 16:22:20

标签: jsf-2

我们有一个JSF2.1.7应用程序,我们的IT安全发现了一个问题,如下所示

 In Browser:
    1) Get login Page.
    2) Post Login Page with UserName/Password & submit&JSFViewStateId_1&JSessionID_1
    3)Successful login.

几分钟内,如果我们使用旧的ViewState和新的JSession进行与下面相同的http请求。

1) Post Login page with UserName/Password & submit&JSFViewStateId_1&JSessionID_2
   2) Successful Login

想知道服务器如何接受旧视图状态,当第二个请求发出时,它是否应报告视图已过期? 服务器是否将ViewSTate和JSession ID验证为组合身份验证。

1 个答案:

答案 0 :(得分:0)

仅当javax.faces.STATE_SAVING_METHOD设置为client时才可以。然后javax.faces.ViewState不表示引用存储在用户会话中的视图状态的唯一视图状态标识符,而是代表整个视图状态本身,以序列化的风格。然后会话ID不再相关。

正在测试的webapp显然已启用客户端状态保存。这是一个安全问题是否是第二个。只有在存在XSS漏洞时,才有可能将视图状态提取并发送到恶意服务器。 JSF本身具有非常强大的内置XSS防护功能,开发人员只能通过在重新显示用户控制的数据时显式使用escape="false"来禁用它。即使如果有一个XSS漏洞,那么可以发送会话ID。服务器端状态保存不会更安全。