public final class HiddenEncryptionUtil
extends java.lang.Object
このユーティリティでは、Encryptor
インタフェースを実装したクラスに、暗号化と復号の処理を移譲する。 デフォルトではAesEncryptor
を使用する。 暗号化と復号に使用するクラスを変更したい場合は、"hiddenEncryptor"という名前でリポジトリに登録する。
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
KEY_HIDDEN_NAME
暗号化したhiddenタグの値を出力する際に使用する名前
|
static java.lang.String |
KEY_HIDDEN_REQUEST_IDS_NAME
暗号化したhiddenタグの値にリクエストIDを含める際に使用するname属性
|
static java.lang.String |
KEY_HIDDEN_SUBMIT_NAME_PREFIX
暗号化したhiddenタグの値にサブミット情報を含める際に使用するname属性のプレフィックス
|
static java.lang.String |
KEY_NEEDS_ENCRYPTION
現在のリクエストに対して、hiddenタグの暗号化が必要であることを示すリクエストパラメータ名
|
static java.lang.String |
KEY_SUBMIT_NAME
サブミットされた要素を識別するために使用するパラメータの名前
|
Modifier and Type | Method and Description |
---|---|
static java.util.Map<java.lang.String,java.util.List<java.lang.String>> |
decryptHiddenValues(ExecutionContext context,
java.lang.String value)
hiddenタグの値を復号する。
|
static java.lang.String |
encryptHiddenValues(javax.servlet.jsp.PageContext pageContext,
java.util.List<java.lang.String> requestIds,
java.util.Map<java.lang.String,java.util.List<java.lang.String>> values)
hiddenタグの値を暗号化する。
|
public static final java.lang.String KEY_HIDDEN_NAME
public static final java.lang.String KEY_SUBMIT_NAME
public static final java.lang.String KEY_HIDDEN_REQUEST_IDS_NAME
public static final java.lang.String KEY_HIDDEN_SUBMIT_NAME_PREFIX
public static final java.lang.String KEY_NEEDS_ENCRYPTION
public static java.util.Map<java.lang.String,java.util.List<java.lang.String>> decryptHiddenValues(ExecutionContext context, java.lang.String value) throws TamperingDetectedException, KeyEncryptionContextNotFoundException
復号では、暗号化時に埋め込んだハッシュ値とリクエストID文字列を使用して改竄チェックを行う。
暗号化の仕様については、encryptHiddenValues(PageContext, List, Map)
を参照。
context
- ExecutionContext
value
- hiddenタグの値TamperingDetectedException
- 改竄を検知した場合。KeyEncryptionContextNotFoundException
- 暗号化キーをセッションから取得出来なかった場合。public static java.lang.String encryptHiddenValues(javax.servlet.jsp.PageContext pageContext, java.util.List<java.lang.String> requestIds, java.util.Map<java.lang.String,java.util.List<java.lang.String>> values)
暗号化は、下記の仕様で行う。 ・リクエストIDを連結しリクエストID文字列を作成する。 リクエストID文字列は、復号時に値の置き換えによる改竄を検知するために、hiddenタグの値に追加する。 ・全てのhiddenタグの値を連結し、hidden文字列を作成する。 ・"nablarch_hidden"+hidden文字列からハッシュ値を生成する。 ハッシュ値は、復号時に値の書き換えによる改竄を検知するために使用する。 "nablarch_hidden"は、暗号化した値をhiddenタグで出力する際に使用するname属性の値である。 ・ハッシュ値+hidden文字列を暗号化した結果をBASE64でエンコードする。
pageContext
- ページコンテキストrequestIds
- リクエストIDvalues
- hiddenタグの値