asp.netで、CSRF攻撃を軽減するためにIHttpModuleを実装しています。GETでasp.netSessionIDを使用して非表示のフォームパラメーターを応答htmlに挿入します。次に、POSTで、非表示のパラメーターの値が現在のSessionIDと一致することを確認します。私の知る限り、SessionID値を取得する唯一の方法は、Cookieから取得することです。これは、悪意のあるサイトによって読み取られたり、判別されたりすることはありません。私が見落としているものはありますか?
ironsam
質問する
4635 次
2 に答える
8
このアプローチは正しいです。XSRF 保護を POST のみに適用しているため、GET 操作を介して利用可能なすべてのアクションが「安全」であることを確認する必要があります (これはとにかくベスト プラクティスです)。
追加の保険として、GET でも使用できます (すべてのリンクに URL パラメーターを追加し、すべての GET 要求でそれをチェックすることにより) が、面倒です。
あなたが過度に偏執的である場合は、代替 ID に別の乱数を選択できます。これにより、ブラウザーが誤ってセッション Cookie を別のサイトの悪意のある Javascript にアクセスできるようにした場合でも、ユーザーを保護できます。セッションが作成されたら、別の大きな乱数を選択してセッションに保存します。
于 2009-02-05T23:03:08.473 に答える
6
理想的には、セッション ID 以外のものを使用する必要がありますが、基本的にはそれだけです。OWASP は、ユーザーのセッションに保存されているランダムなフォーム要素名を使用することを提案しています。この方法では、攻撃者は正しい隠しフィールドを偽造することさえできなくなります。
于 2009-02-05T23:01:46.980 に答える