2016-06-01 19 views
5

私はウェブセキュリティにはまったく初心者です。さまざまな攻撃方法についてもっと詳しく知りましたが、私の心は、最初に許されていると思います。 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

+0

多くのものが壊れます。たとえば、これらのすべての分析および広告スクリプト。 – Thilo

+0

最初の日から、* CSRFが実行されるようにブラウザが設計されたようではありません。 CSRFは、すでにそこに既にたくさんのウェブサイトがあるところで、*後で*発見されました。間違いなく10以上。事実の後でルールを変更し、ルールの変更に対応するためにすべてのウェブサイトが変更されることを期待しています - 特にクロスサイトリクエストの*ロット*が有害な効果を持たない場合、 –

+0

それはちょっと無関係です。ウェブサイトは自己を守る責任があり、 "正しく"設計された/開発された/維持されたブラウザに頼らざるをえません。これがCSRFトークン(kludgyが必要な場合でも)が必要な理由です。私は、CSRFをウェブサイトアーキテクチャに組み込むことを推奨しています(または既にそれがあるフレームワークを使用する)。そうすれば、常にそこにあり、常にチェックされます(フレームワークを正しく使用することを前提とします)。 – LaJmOn

答えて

4

私は、Webセキュリティにかなり新しいです、と私は 異なる攻撃ベクトルについての詳細を読んで、私の心は、彼らが 最初の場所で許可されていることをboggles。それはウェブが壊れたセキュリティ モデルで設計されており、脆弱であるようです。

すべて該当。最初は安全であるように設計されていませんでした。このWebはもともと、静的な文書管理と共有システムとして設計されており、異なるマシン上のリソースに直接リンクすることができました。

今日ご覧になっているダイナミックウェブは、くぼみです。 CSRFのトークン、HTTPヘッダーなどで修正できますが、これらのことをせずに動的なWebサイトを作れば、脆弱である可能性があります。

チェックアウトits history in the Wikipedia article

曖昧で不正確な情報にも驚いています。 の例では、最初にSingle Origin Policyがかなり良く聞こえますが、 はXHRにのみ適用され、あとは が実際にXHRのクロスオリジンPOST(古典的なCSRF)を防止していません。 攻撃。私は読書を続けてうれしいです。

また、主に該当します。同じ原点ポリシーは、ウィンドウとフレームにも適用されます(example.comではif.orgにIFrameをexample.orgに含めるとexample.orgのコンテンツをJavaScriptで変更できません)。はい、クロスドメインXHRを作成できますが、CORSを有効にしないと応答を読み取ることができません。これはCSRFトークンが盗まれるのを防ぎますが、CSRF保護を使用していない場合はCSRFの脆弱性が存在します。

カスタムヘッダーをクロスドメインに送信できないため、adding a custom headerなどのその他の防御機能を使用してCSRFを軽減できます。

XHRは、あまりにも大きな制約と見なされていたクロスドメインにはアクセスできないため、CORSの出現がありました。これまでのフォームでは、異なるドメインにアクセスできるため、特に危険な操作とは見なされませんでした。適切な管理が行われていれば、それはまだ行われていません。

あり、サーバが 要求が適切な場所から来ていることを確認するために使用することができ原点ヘッダもある - しかし、おっと、それはブラウザ間で一貫性 に設定されているが、それは、あなたが設定されていない場合同じ起源要求のためであった場合は 、ある特定のブラウザ(おそらくIMGタグ?)では取得できなかったタイプ のタイプであるかどうかを確かめることはできません。 お読みください。

まあまあです。 this answerを参照してください。

がCookieの発信元ではないページから発信された要求でブラウザがセッションCookieを送信するのはなぜですか?

それ以外の場合は、多くのことが壊れます。静的サイトからバックエンド処理を行う動的サイトに送信されるように設計された無数のフォームがあります。

新しいstandard for "same-site" cookiesがあります。あまり乾燥しない説明はhereです。

基本的にクッキーは、新しい属性SameSiteで設定できます。 strictモードでは、原点が異なるとクッキーは送信されません。 laxモードでは、それらの方法は、例えば、 CSRFの脆弱性が主に存在するPOSTです。

あなたがリンクしたのはこれの初期のドラフトでした。

+0

「静的サイトからバックエンド処理を行う動的サイトに送信されるように設計された無数のフォームがありますが、クロスドメインですか?もしそうなら、彼らはクッキーが別のウィンドウによってターゲットサイトに設定されていると仮定します。私はそのような例を考えようとしていて、何も見つけることができませんでした。 SameSiteのクッキーは興味深いように聞こえ、すぐに標準になることを願っています。 – aaa90210

+0

フェデレーテッド・シングル・サインオンは、セッションごとにノンスが作成される場合があり、フローがサイトにリダイレクトされたときに検証されることがあります。例えばサイト - > Cookieの設定 - > OpenIDプロバイダへのリダイレクト - >認証 - >クレーム付きリダイレクト - >サイトチェックのnonce cookieおよびclaim – SilverlightFox

関連する問題