暗号化
CSP ページで、%session オブジェクトの一意のセッション・キーを使用することで、他の CSP ページに送信される URL パラメータを含め、ブラウザに送信される値を暗号化できます。セッション・キーが HTTP アカウントに送信されることはないため、このメカニズムは安全です。
値の暗号化と解読
値を暗号化するには、ページ・クラスの Encrypt() メソッドを使用します。このメソッドは、%CSP.PageOpens in a new tab のスーパークラスから継承されます。同じセッション内で、Decrypt() メソッドを使用することでこの値を解読できます。どちらのクラスでも、このメソッドは自動的にセッション・キーを使用することに注意してください。
URL パラメータの暗号化
ある CSP ページから同じセッション内の別の CSP ページへの HTML <A> アンカー・リンクを含める場合、URL パラメータを暗号化できます。ブラウザに表示される URL には、以下のように元のパラメータではなく CSPToken URL パラメータが含まれます (以下の例では切り詰められています)。
GCSP.EncryptPage2.cls?CSPToken=1nz1Q1kNd$fJPuzngVKhsKrO...
システムには、以下の 2 つの部分があります。
-
リンクの URL を作成するページで、%CSP.PageOpens in a new tab の Link() メソッドを使用して URL を作成します。
暗号化されるかどうかに関係なく、すべての URL に対して Link() を使用するのがベスト・プラクティスです。
Set origurl="GCSP.EncryptPage2.cls" Set urlparms("SAMPLEPARM")="sample value" Set tURL = ##class(%CSP.Page).Link(origurl,.urlparms) Set html="<p>Link to page 2: <a href="""_tURL_""">Link</a>"_"</p>"
-
ターゲット・ページで、ENCODED クラス・パラメータを 1 または 2 に指定します。このクラス・パラメータには、以下のいずれかの値を指定できます。
-
ENCODED=0 — クエリ・パラメータは暗号化されません。ブラウザはこれらをそのまま受け取ります。
-
ENCODED=1 — すべてのクエリ・パラメータは暗号化され、CSPToken URL パラメータ内で渡されます (例を参照)。
-
ENCODED=2 — 暗号化されないパラメータ (これは、Link() メソッドで追加されたパラメータとは異なり、URL に手動で追加された URL パラメータです) があることを除き、1 と同じです。暗号化されないパラメータは %request オブジェクトから削除されます。
以下に例を示します。
Parameter ENCODED = 2;
-
ここに記載されているように URL パラメータが暗号化されている場合でも、通常の方法でパラメータの値を取得できます。以下に例を示します。
set urlparm=$GET(%request.Data("SAMPLEPARM",1))
InterSystems IRIS® データ・プラットフォームでは、必要な場合は常に自動的に値を解読します。