0

このリンク ( http://software-security.sans.org/developer-how-to/developer-guide-csrf ) は、Visual Studio 2012 以降、Microsoft が組み込みのクロスサイト リクエスト フォージェリ (CSRF) 保護を追加していることを示しています。新しい Web フォーム アプリケーション プロジェクトに。新しい ASP .NET Web フォーム アプリケーションをソリューションに追加し、Site.Master コード ビハインド ページを表示します。このソリューションは、Site.Master ページから継承するすべてのコンテンツ ページに CSRF 保護を適用します。

Visual Studio 2012 によって自動生成されたコードは、ランダムな GUID を生成し、その GUID を HttpCookie に格納します。この GUID は、さまざまな Web ページで使用されます。各ページで、この GUID は Page.ViewStateUserKey に割り当てられるため、ViewStateUserKey は CSRF 攻撃を保護できます。条件は、アプリが SSL を使用する必要があることです。

Cookie に暗号化が必要ないのはなぜですか? アプリに SSL が必要であることはわかっています。しかし、Cookie にプレーン テキストで格納された GUID は、セキュリティ上よくありませんね。

4

2 に答える 2

2

これは、CSRF 攻撃を軽減する非常に標準的な方法です。Cookie に値を設定し、POST データを通じてその値を確認します。これの背後にある理由は、任意の値で任意のサーバーに POST されるリクエストを作成するのは簡単ですが、Cookie を取得するのはそれほど簡単ではないということです。同じオリジン ポリシーにより、送信先のページと同じドメインにいる場合を除き、JavaScript を使用してこれを行うことができなくなります。これはおそらく、Cookie が HttpOnly で設定されておらず、ターゲット Web サイトに XSS の脆弱性がある場合にのみ、攻撃に当てはまります。同様に、同一オリジン ポリシーにより、ターゲット フォームを iframe にロードし、JavaScript を介して非表示フィールドにアクセスすることができなくなります。

ここでのセキュリティ値は、別のドメインで秘密の Cookie 値を取得 (または設定) できないことに由来します。この値は、ユーザーの要求と共にそのドメインに自動的に送信されます。同様に、アプリケーション全体のセキュリティはおそらくこれに大きく依存しています。これらの同一生成元の保護がなければ、Cookie は簡単に公開され、セッションは簡単に乗っ取られる可能性があります

CSRF 保護を行う一般的な方法は、実際にはセッション ID を CSRF トークンとして使用することです。これは Cookie に格納されたランダムな値なので、問題なく動作します。ASP.NET でこれを行う際の問題は、セッションを使用していない場合、またはセッションにまだデータを設定していない場合 (たとえば、ユーザーがログインする前)、セッション ID が保持されることです。変更、それは良くありません。ランダム GUID も同じように機能します。

ここでは、SSL はほとんど関係ありません。攻撃者があなたの Cookie にアクセスできたとしても、攻撃者はあなたになりすますために必要なものをすべて手に入れているので、CSRF は必要ありません。HTTPS 経由で渡される Cookie は、HTTP ヘッダーの一部であるため、暗号化されていることに注意してください。

于 2013-05-03T16:50:54.710 に答える
0

Cookie は、CSRF でユーザーを攻撃しようとしている可能性のあるサードパーティから秘密にしておくだけでよいため、(SSL を除いて) 暗号化は必要ありません。ブラウザーは、Cookie を設定したドメイン外のサイトに Cookie を送信しないため、サーバーは、要求を行っているユーザーが第三者ではなく、要求を行っていることを確認するために必要なのは、要求と共に Cookie を提供することだけです。サード パーティは自社以外のドメインに Cookie を設定できず、Cookie はドメイン外に送信されないため、ユーザーが CSRF 攻撃の被害者である場合、ユーザーが必要な Cookie を送信する方法はありません。

この質問がまだ興味がある場合は、これをもう少し詳しく説明するのに役立つかもしれません: How is using Synchronizer Token Pattern to prevent CSRF safe?

于 2013-05-03T22:50:54.847 に答える