【问题标题】:Implications of saving session on the client with javax.faces.STATE_SAVING_METHOD使用 javax.faces.STATE_SAVING_METHOD 在客户端上保存会话的含义
【发布时间】:2015-06-07 20:02:16
【问题描述】:

我的第一个 JSF 页面正在抛出 javax.faces.application.ViewExpiredException。当我搜索时,我得到了解决我的问题的解决方案。

<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>

但我担心安全隐患。

【问题讨论】:

    标签: security jsf session viewstate jsf-2.2


    【解决方案1】:

    这根本不会在客户端保存“会话”。

    这只会在客户端保存 JSF 视图状态。这是在 JSF 2.2 中始终使用在应用程序启动时生成的密钥进行 AES 加密的。但是,一旦您重新启动应用程序,这就会失效,从而导致所有现有视图状态变得无效。您可以在web.xml 中指定如下固定键,以便所有现有视图状态在服务器重启后保持有效:

    <env-entry>
        <env-entry-name>jsf/ClientSideSecretKey</env-entry-name>
        <env-entry-type>java.lang.String</env-entry-type>
        <env-entry-value>[AES key in Base64 format]</env-entry-value>
    </env-entry>
    

    您可以使用this page 生成 Base64 格式的随机 AES 密钥。

    另见:

    【讨论】:

    • 我觉得有错别字jsf.ClientSideSecretKey应该换成jsf/ClientSideSecretKey
    猜你喜欢
    • 2017-12-03
    • 2018-09-26
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 2019-09-22
    • 2011-06-14
    • 2017-04-01
    • 1970-01-01
    相关资源
    最近更新 更多