JSF 1.2 と Mojarra を使用してビューステートを暗号化する方法を見つけようとしています。奇妙なことに、一部のサーバーではデフォルトで暗号化されているように見えますが、他のサーバーでは暗号化されていないようです. たとえば、ローカルホストでは次のように表示されます。
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-40233784603124937:-3413182513789758151" autocomplete="off" />
しかし、テスト環境サーバーでは次のようになります。
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="j_id4:j_id5" />
これら 2 つの違いに気付くでしょう。
- 最初は autocomplete="off" です
- 1 つ目は viewState 値が暗号化されていますが、2 つ目は暗号化されていません。
問題は、なぜこの 2 つが違うのか、一生わからないことです。私のローカルホストとサーバーのコードベースは同じです。私の web.xml には構成オプションが指定されていないため、私のローカルホストは暗号化されていないと想定していました (それがデフォルトですよね?)。
Mojarraのドキュメントに従って、次を追加する必要があります。
<env-entry>
<env-entry-name>com.sun.faces.ClientStateSavingPassword</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>[SOME VALUE]</env-entry-value>
</env-entry>
しかし、それはサーバー側の状態の保存ではなく、クライアントの状態の保存に特化しているようです。そして、私が誤解していない限り、サーバー側の状態保存を使用しています (少なくとも、javax.faces.STATE_SAVING_METHOD.
だから、私の質問:
- ローカルホストとサーバーで構成が異なるのはなぜですか? web.xml 以外にオプションを指定できる場所はありますか?
- すべてのサーバーで viewState 暗号化 (ローカルホストなど) を有効にするにはどうすればよいですか?
構成:
- JBoss 5.1.0.GA
- モハラ 1.2_12-b01-FCS
- Seam 2.2.0.GA