20170813-CSRF CSRF

CSRF

CSRFは、クロスサイトリクエストフォージェリの頭字語であり、かつ、クロスサイトリクエストフォージェリに変換されます。

  1. クロスサイト:名前が示すように、それは一つのサイトから別のものにあります。
  2. 要求:HTTPリクエスト。
  3. 偽造:ここでは、それは偽物、カモフラージュとして理解することができます。
  • 手段をまとめると:サイトAからウェブサイトBへの要求を開始し、この要求は変装の結果である、目的を達成するために迷彩操作があること、リクエストがBのようなサイトのルックスから発信することですしそして、サーバ側が誤っ要求ではなく、サイトから開始するよりも、あなたのサイトから開始されたと思ったBサイトをしましょう。
  • CSRF攻撃は、ハッカーがクッキーサーバによる犠牲者の信頼をカンニングしているが、ハッカーは、クッキーがコンテンツを見ることができない、クッキーを取得することはできません。また、サーバから返された結果は、ブラウザ同一生成元ポリシー制限するので、ハッカーは解析できません。したがって、ハッカーが返された結果から何かを得ることができない、彼はそれが直接サーバーにデータの値を変更し、代わりのデータ・サーバを盗むために、説明したように、コマンド要求を実行するサーバーにリクエストを送信することで行うことができます。だから、私たちはそれらのサービスの対象を保護したいデータを生成することができ、直接変更し、データサービスを読み取るためには、CSRF保護を必要としません。

原則

CSRF

出典:CSRF攻撃が機能し、実現して防衛をnodejs

 図から分かるように、Aサイトからの要求を開始するためにふり、2つのステップが順次完了しなければなりません。

  1.信頼済みサイトAにログインし、ローカルにクッキーを生成します。

  Aの場合は2は、外の危険なウェブサイトB.へのアクセスではありません
  

  • クッキーは、ドメイン間で送信されていないため、Aサイトから発信するふりをする理由。上記の本実施例の結合された:要求は直接BサイトサーバにAサイトから送信される場合、Bを作製クッキーと共にサーバサイトAに送信されません。
  • なぜあなたはクッキーを送りたいですか?これを読むことによってクッキーサーバ、リソースがクッキーになる際に認証を必要とする要求とともにサーバーにクライアントに返され、クライアントユーザーがログインした後、サーバーは、情報の一部は、ユーザーのクッキーに置かれるためでありますユーザ認証のための情報は、認証後に右の応答を行います。
  • いくつかは何のCookie情報がない場合、サーバーがアクセスを拒否することで、アクセスリソースBサイトAのWebサーバーへの認証を必要とし、Bサイトが悪意のあるすることはできません。リクエストABのウェブサイトを改ざんし、サーバーにAとクッキーAのウェブサイトを送信することができますし、サーバー上のこの時間は要求が正当なものである、それは正しい応答を与えることを考えて、この時、Bは、サイトの目的を達成するために。

攻撃者があなたに代わって、悪質なリクエストを送信するためにあなたのアイデンティティを盗みました。CSRFは、物事には、行うことができます、あなたの電子メール、メッセージングの名前を送信してアカウントを盗み、さらには商品の購入、仮想通貨転送する......起因する問題は、次のとおりです。個人のプライバシーや財産の安全性の開示を。

CSRF攻撃を防ぐ方法

CSRF攻撃は成功することができましたので、ハッカーハッカーは、直接渡すために認証情報を知らなくても、ユーザーの中にクッキーを使用することができるように、すべてのユーザ認証情報は、クッキーに存在していることを完全に偽のユーザー要求セキュリティ検証。CSRFに抵抗するために、キーは、要求で偽造することができない情報のハッカーを置くことです。

POSTメソッドを使用して重要な操作の場合:

今、セキュリティ上の理由から、ブラウザは、デフォルトでは、一定の制限を行っている、他のサイトに送信されたフォームタグ要求はブロックされます

使用コード:

最後の要求を完了するために、アプリケーションと対話するようユーザーに強制。例:ユーザーがフォームの行動を提出するたびに確認コードを完了するために必要されています

リクエストトークンと認証アンチCSRFトークンのアドレスを追加します。

  1. サーバは、ルート要求を受信したときにページに埋め込まれた乱数(典型的には、フォームの形で埋め込まれ、の<input type =「隠れた」NAME =「_ csrf_token」値=「XXXX」にページ要求をレンダリングするとき、それは、乱数を生成します>)
  2. サーバーは、ユーザーのブラウザの種にセッションやクッキーなどの乱数に、いったんsetcookieを提供しました
  3. ユーザーは、(それが自動的に_csrf_token含めて、現在のフォームで、背景にすべての入力を提出するよう、直接することができ、フォーム送信フォーム用)、GETやPOSTリクエスト_csrf_tokenパラメータを持って送信すると
  4. 舞台裏では、要求の解像度を受け取った後にクッキーが_csrf_token値を取得し、その後、彼らは要求が正当なものであることを示している等しい場合、比較及びユーザの要求が提出さ_csrf_token作る要求します。

注意:

  1. セッションで最高のトークン。トークンはクッキー、多くのページを(同じページを複数回開く)を開くために、ユーザーのブラウザに保存されている場合。いくつかのページが使用された後に、トークンは、新しいトークンが再移植される消費が、それらの古いタブページには、HTMLや古いトークンに対応します。オープニングページ数分前には、適切に提出することができない理由は、ユーザの感触を行います
  2. GETの使用を最小限に抑えます。当社のウェブサイト上の攻撃者が画像をアップロードした場合、攻撃者のサーバ要求は、要求がページ現在の画像のリファラURLで表現されたときに、ユーザーが実際に負荷に画像を送信しています。そして、あなたは、インターフェイスにGETメソッドを使用する場合は、フォームのURL:
    HTTPS://xxxx.com/gift giftId = ...?

これは、攻撃者が獲得_csrf_tokenに相当し、短い時間では、他のGETインタフェースを動作させるために、このトークンを使用することができます。

  1. ユーザーのクッキーが盗むためにウェブサイトのXSSの脆弱性が原因容易であるため、プログラムはXSSの状況が存在しない状態でなければなりませんので安全でした。

検出リファラー:

リファラは、HTTPプロトコルに従って、リファラHTTPヘッダと呼ばれるフィールドがあり、それは、HTTPリクエストの送信元アドレスを記録します。決定された場合、リファラーの値をチェックすることにより、サーバ
サイトのリファラーがページが、外部サイトのページではないことは、その後、我々は、要求が違法であると判断することができます

この方法は、原則として、ピクチャホットリンクの実現を阻止することです

  • 長所:このアプローチの明白な利点は単純で、通常のウェブサイトの開発者は、我々はそれの最後のリファラーの値をチェックするために、すべてのセキュリティに敏感なリクエストに追加インターセプタを統一する必要があり、CSRFの脆弱性を心配する必要はありません。特に、現在、既存のシステムのために、あなたは非常に便利なリスクがない、現在のシステムの既存のコードとロジックを変更する必要はありません。
  • 短所:リファラー値は、HTTPプロトコル上の明確な要求があるが、ブラウザによって提供されるが、各ブラウザは、リファラーの特定の実装のために異なる場合があり、ブラウザ自体がセキュリティ上の脆弱性ではないことを保証するものではありません。使用リファラー検証値は、理論的には、これは安全ではない、保証する第三者(つまりブラウザ)の安全性に依存することです。ブラウザのいくつかの低バージョンについては、リファラー値を改ざんするには、すでにいくつかの方法があります

HTTPヘッダのカスタムプロパティ

また、このメソッドは、認証トークンのために使用され、その差のための方法は、HTTPリクエストのパラメータとしてトークンに配置されていないここにいることであるが、カスタムHTTPヘッダー属性の中でそれを置きます。このクラスでのXMLHttpRequestは、クラスは、すべてのワンタイム要求HTTPヘッダプラスcsrftoken性、及びへトークン値とすることができます。

参考:

のCSRF(クロスサイトリクエストフォージェリ)の理解

CSRFの攻撃に

XSSのクロスサイトスクリプティングCSRF攻撃やクロスサイトリクエストフォージェリ攻撃の研究は結論付けました。\

CSRF攻撃の原理と実現と防衛nodejs

CSRF攻撃は、それに応じて

おすすめ

転載: www.cnblogs.com/baimeishaoxia/p/12215299.html