私はウェブセキュリティにはまったく初心者です。さまざまな攻撃方法についてもっと詳しく知りましたが、私の心は、最初に許されていると思います。 Webは壊れたセキュリティモデルで設計されており、脆弱であるようです。ブラウザでCSRFが許可されるのはなぜですか?
曖昧で不正確な情報にも驚いています。たとえば、最初はSingle Origin Policyがかなり良いと聞こえますが、XHRにのみ適用され、あとで、実際にはCSRFの古典的な攻撃であるXHRクロスオリジンPOSTを実際には防ぎません。私は読書を続けてうれしいです。
サーバがリクエストが適切な場所から来ていることを確認するために使用できるOriginヘッダーもありますが、ブラウザ間で矛盾して設定されています。設定されていないと、それが同じ起源要求のためか、特定のブラウザ(多分IMGタグ?)のためにそれを取得しなかった要求タイプのためだったかどうか確かめてください。読み続けます。
だから 右方法は、セッションクッキーでCSRFトークンを設定し、また、フォーム/リンクにそのトークンを追加し、提出にそれらをサーバ側を比較しているようです。理論的には(この質問の目的ですべてのXSS攻撃を除外することができます)、別のタブからCSRFを試行すると、フォームの入力要素が一致するトークンに設定されていない(つまり、クッキーからトークンを読み取ることができないため)、サーバーは要求を拒否します。作品はクルージングですが、決してチェックすることを決して忘れないようにしてください! なぜブラウザはクッキーの起源ではないページからのリクエストでセッションクッキーを送信するのですか?私が意味する、ブラウザは、正当な理由のためにクッキーにに異なるドメインを送信することを拒否、しかし異なる起源からそれらを送信することは非常に満足しているのだろうか?彼らはしなかった場合、材料が壊れますか?これは、CSRFに対する強力な防御になります。サーバには、やっていることをやりなおし、有効なセッションクッキーをチェックするだけです。
編集:これは状況を改善するための試みですか? https://tools.ietf.org/html/draft-west-origin-cookies-01
多くのものが壊れます。たとえば、これらのすべての分析および広告スクリプト。 – Thilo
最初の日から、* CSRFが実行されるようにブラウザが設計されたようではありません。 CSRFは、すでにそこに既にたくさんのウェブサイトがあるところで、*後で*発見されました。間違いなく10以上。事実の後でルールを変更し、ルールの変更に対応するためにすべてのウェブサイトが変更されることを期待しています - 特にクロスサイトリクエストの*ロット*が有害な効果を持たない場合、 –
それはちょっと無関係です。ウェブサイトは自己を守る責任があり、 "正しく"設計された/開発された/維持されたブラウザに頼らざるをえません。これがCSRFトークン(kludgyが必要な場合でも)が必要な理由です。私は、CSRFをウェブサイトアーキテクチャに組み込むことを推奨しています(または既にそれがあるフレームワークを使用する)。そうすれば、常にそこにあり、常にチェックされます(フレームワークを正しく使用することを前提とします)。 – LaJmOn