Skip to main content

暗号化

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 tabLink() メソッドを使用して 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® データ・プラットフォームでは、必要な場合は常に自動的に値を解読します。

FeedbackOpens in a new tab