viewstateのセキュリティ
2358 ワード
最近viewstaeを勉強して、心得と要約は以下の通りです.
ViewStateは明確なテキストにフォーマットされていないため、暗号化されていると思っている人もいますが、実際にはありません.逆に、ViewStateはBase 64符号化を行っただけで、アプリケーションが使用する応答/要求符号化を考慮せずに、値が往復中に変化しないことを保証します.
アプリケーションに2つのViewStateセキュリティ・レベルを追加できます.改ざん防止 暗号化 なお、ViewStateセキュリティは、ASPを処理する提示する.NETページの所要時間は直接的な影響があります.簡単に言えば、安全性が高いほど速度が遅くなります.したがって、必要でない場合は、ViewStateにセキュリティを追加しないでください.
ハッシュ・コードは、View Stateフィールドの実際のデータのセキュリティを確保することはできませんが、通常、ユーザーが入力できない値を返信アプリケーションによってだまし取る可能性を大幅に低減します.
EnableViewStateMACの属性を設定ことでASPを示すことができる.NETは、ViewStateフィールドにハッシュ・コードを追加します.
ページ・レベルでEnableViewStateMACを設定するか、アプリケーション・レベルで設定できます.返送時、ASP.NETは、ViewStateデータのハッシュ・コードを生成し、そのハッシュ・コードを、エコー値に格納されたハッシュ・コードと比較します.2つのハッシュ・コードが一致しない場合、ViewStateデータは破棄され、コントロールは元の設定に戻ります.
デフォルトでは、ASP.NETはSHA 1アルゴリズムを用いてViewStateハッシュコードを生成する.また、machine.configファイルでを設定してMD 5アルゴリズムを選択します.以下に示します.
暗号化を使用して、ViewStateフィールドの実際のデータ値を保護できます.まず、上記のように
デフォルトでは、ASP.NETは、ランダムな認証鍵を作成し、各サーバのローカルセキュリティ認証(LSA)に格納します.別のサーバで作成されたView Stateフィールドを検証するには、2つのサーバのvalidationKeyを同じ値に設定する必要があります.上記のいずれかの方法でWebレルム構成で実行されているアプリケーションに対してViewStateセキュリティ設定を行う場合は、すべてのサーバに対して一意で共有されている認証鍵を提供する必要があります.
検証鍵は、20~64ビットの暗号強化バイトを含むランダム文字列であり、40~128個の16進数文字で表されます.鍵が長ければ長いほど安全なので、コンピュータがサポートしている場合は128文字の鍵を使用することをお勧めします.例:
System.Security.Cryptography名前空間にはRNGCRyptoServiceProviderクラスがあり、このクラスを使用して次のGenerateCryptoKeyのような文字列を生成できます.aspxの例を示します.
ViewStateは明確なテキストにフォーマットされていないため、暗号化されていると思っている人もいますが、実際にはありません.逆に、ViewStateはBase 64符号化を行っただけで、アプリケーションが使用する応答/要求符号化を考慮せずに、値が往復中に変化しないことを保証します.
アプリケーションに2つのViewStateセキュリティ・レベルを追加できます.
改ざん防止
ハッシュ・コードは、View Stateフィールドの実際のデータのセキュリティを確保することはできませんが、通常、ユーザーが入力できない値を返信アプリケーションによってだまし取る可能性を大幅に低減します.
EnableViewStateMACの属性を設定ことでASPを示すことができる.NETは、ViewStateフィールドにハッシュ・コードを追加します.
<%@Page EnableViewStateMAC=true %>
ページ・レベルでEnableViewStateMACを設定するか、アプリケーション・レベルで設定できます.返送時、ASP.NETは、ViewStateデータのハッシュ・コードを生成し、そのハッシュ・コードを、エコー値に格納されたハッシュ・コードと比較します.2つのハッシュ・コードが一致しない場合、ViewStateデータは破棄され、コントロールは元の設定に戻ります.
デフォルトでは、ASP.NETはSHA 1アルゴリズムを用いてViewStateハッシュコードを生成する.また、machine.configファイルで
<machineKey validation="MD5" />
暗号化
暗号化を使用して、ViewStateフィールドの実際のデータ値を保護できます.まず、上記のように
EnableViewStatMAC="true"
を設定しなければならない.次に、machineKey validationタイプを3 DESに設定します.これはASPを示す.NETはTriple DES対称暗号化アルゴリズムを用いてViewState値を暗号化する.<machineKey validation="3DES" />
Web分野におけるViewStateセキュリティ
デフォルトでは、ASP.NETは、ランダムな認証鍵を作成し、各サーバのローカルセキュリティ認証(LSA)に格納します.別のサーバで作成されたView Stateフィールドを検証するには、2つのサーバのvalidationKeyを同じ値に設定する必要があります.上記のいずれかの方法でWebレルム構成で実行されているアプリケーションに対してViewStateセキュリティ設定を行う場合は、すべてのサーバに対して一意で共有されている認証鍵を提供する必要があります.
検証鍵は、20~64ビットの暗号強化バイトを含むランダム文字列であり、40~128個の16進数文字で表されます.鍵が長ければ長いほど安全なので、コンピュータがサポートしている場合は128文字の鍵を使用することをお勧めします.例:
<machineKey validation="SHA1" validationKey=" F3690E7A3143C185AB1089616A8B4D81FD55DD7A69EEAA3B32A6AE813ECEECD28DEA66A 23BEE42193729BD48595EBAFE2C2E765BE77E006330BC3B1392D7C73F" />
System.Security.Cryptography名前空間にはRNGCRyptoServiceProviderクラスがあり、このクラスを使用して次のGenerateCryptoKeyのような文字列を生成できます.aspxの例を示します.
<%@ Page Language="c#" %> <%@ Import Namespace="System.Security.Cryptography" %> <HTML> <body> <form runat="server"> <H3>