Последствия сохранения сеанса на клиенте с помощью javax.faces.STATE_SAVING_METHOD

Моя первая страница JSF выбрасывала javax.faces.application.ViewExpiredException. пока я искал, я получил это решение, которое решило мою проблему.

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

Но я обеспокоен последствиями безопасности.

Ответ 1

Это не сохраняет сеанс на стороне клиента.

Это только сохраняет состояние просмотра JSF на стороне клиента. Это в JSF 2.2 всегда AES-encrypted с ключом, который генерируется при запуске приложения. Это, однако, недействительно, как только вы перезапустите приложение, тем самым сделав все существующие состояния представления недопустимыми. Вы можете указать фиксированный ключ, как показано ниже, в 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>

Вы можете использовать эту страницу для создания случайного ключа AES в формате Base64.

См. также: