CSRF CSRF攻撃の原則、予防とcsrftokenの原則について

 

攻撃CSRFの原則とプロセス

  まだログインしているユーザーを維持しながら、フォームや攻撃を含むコードの内容を送信するために、ユーザーに渡されたフィッシングサイトを参照して、生成された通常のログインユーザを使用してCSRFクッキーは、フロントエンドは、JSを使用することができます要求して人質を送りますユーザーのログインアクセスクッキー、通常のウェブサイトの正常なサイト、サイト上のユーザの手の広がりによる偽造フォームの目的。他のサイトへのフォームが作成、ユーザーが送信し、ユーザーにログオンcsrftoken発行したウェブサイトを避けるために、トークンは(ブラウザでローカルストレージに格納されている)クッキーに保存されていない、コール(WebサイトのフロントエンドJSで識別される{{csrftoken}})、提出トークンは、このウェブサイト(セッションに格納されたサーバー認証トークンデータ)を検証するために、フォームから必要な形状を有する場合。

 

どのようにCSRFの防御

  1. コードを送信
    形式でランダムな数字または文字コードを追加します。ユーザーやアプリケーションを強制することによって相互作用。効果的にCSRF攻撃を抑制します。

  2. リファラーチェック
    チェックページ要求、最も可能性の高いCSRF攻撃の上に非正規を前提としています。

  3. トークン検証
    • HTTPリクエストのコンテンツトークンまたはしない要求は、その要求がCSRF攻撃を拒否されたこととすることができること、ランダムにトークン生成したトークンを認証するためにインターセプタサーバ側を確立する、いかなるトークンが想定されていないのパラメータの形態で添加されます。
    • トークンの必要性ランダム十分
    • 機密性の高い操作は、POSTを使用する必要があります。代わりにGETで、フォームのフォーム形式で提出しました。トークンリークを回避することができます。
  4. HTTPヘッダーとそのカスタム属性を検証

    このような方法は、認証トークンのために使用されています。ここでトークンは、HTTPリクエストパラメータの形に配置されていないが、HTTPヘッダ内に定義されたそれらの特性に入れました。このクラスでのXMLHttpRequestは、クラスは、すべてのHTTPヘッダに1回の要求であることに加えて、このプロパティをcsrftokenことができます。そして、彼らにトークン値。このような方法は、要求にトークンを追加不便を克服します。同じ時間は、リファラー、外出先を通じて他のサイトへのトークンのリークについてのない心配を行い、XMLHttpRequestのリクエストにより、ブラウザのアドレスのアドレスバーに記録されません。

トークンについて

  1. トークンを保存する必要があります(にローカル/ stogrageセッション
  2. クッキーとして有効同期間にトークン加え、あなたはまた、操作の他の方法の多くを持っている必要があります。トークンの有効期限が切れたら、だけに必要もう一度1を取得します。あなたはリフレッシュトークンへのインタフェースを使用することができます。あなたも、保存されたトークン初版発行時間を置くことができます。そして、何が2週間でログに再び余儀なくされました。あなたは(それが必要なときに、トークン寿命が長いとき)、あなたがチェックのためのトークンマネージャの行くを生成する必要がトークンを撤回する必要があるとします。
  3. ローカル/セッションストレージは、ドメイン間での仕事は、タグにクッキーを使用しません:同一生成元ポリシーブラウザベース
  4. 必要性は、暗号化と署名トークンに、そして、あります
  5. OAuthの2にJSONウェブトークンアプリケーション

ホワイトリストクロスドメインリクエストについて

ジャンゴ-CORSは、Djangoのフラスコまたは他の拡張機能を拡張しました

  1. 書き込みミドルウェア、インターセプト処理オプションのミドルウェア
  2. 要求はオプション、そうでない場合opitonsであるかどうかを決定する方法は、そうでなければ、実行のビューに、以下の手順に従って処理を未処理のまま
  3. ホワイトリストとは対照的に、要求のオプションからアクセスドメイン名を削除し、ドメイン名を可能にします、
  4. ホワイトリストは、クロスドメインアクセスを許可するように返された場合は、それ以外の場合は許可されていません

同一生成元ポリシーブラウザ

同一生成元ポリシー(同一生成元ポリシー)、それは同一生成元ポリシーの欠如、ブラウザの通常の機能が影響を受ける可能性がある場合は、ブラウザのコアは、また、最も基本的なセキュリティ機能です、慣例です。ウェブは、同一生成元ポリシーに基づいて構築されると言うことができますが、ブラウザが実現元ポリシーに向けられています。同一生成元ポリシーの特別なプロパティがアクセスするリソースは、同一生成元ポリシーに拘束され、相互に情報を簡単に取得するために異なるサイトを避けるために、ブラウザ自体、ブラウザで、単純に言いました。

いわゆる相同ドメイン、プロトコル、同一のポートを指します。場合は、ブラウザ内の2つのタブページがオープンBaiduのと、Googleのページです。このページは、所属チェックするスクリプトブラウザBaiduのタブページのスクリプトを実行する場合、すなわち、相同かどうかを確認するために、そして百度だけ相同スクリプトが実行されます。非相同、そのデータが要求されている場合、ブラウザは例外となり、コンソールプロンプト年半ばレポートへのアクセスを拒否されました。

:私たちは、ブラウザのようなHTTPリクエストモード取得要求資源、であることを知っているHttp://www.baidu.com:8080/xxxxこれではHTTPプロトコルが要求、www.baidu.comドメイン名、ポート番号は要求がHTTPプロトコルモードを使用していることを意味し、8080で、サーバーは、ドメイン名からサービスを展開www.baidu.com XXXX 8080のポート上のリソースを要求します。

するととき、プロトコル、ドメイン名は、ポートが、あること、異なるソースと同じではありません。

コピー
现在有一个网站:http://www.a.com/a。

https://www.a.com/a          :不同源,协议不同,此处协议是https!

http://www.b.com/a :不同源,域名不同 http://www.a.com:8080/a :不同源,端口不同 http://www.a.com/b :同源 综上,跨域就是请求路径的url不同源。

マニュアルを参照してください:https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy

セッション、のlocalStorage、のsessionStorage、異なるクッキー記憶機構

localStorage、のsessionStorageは、クッキーはブラウザに保存されたデータをキャッシュするために使用することができます。

sessionStorage、クッキーは永久的な存在、ブラウザを閉じるか、サーバーへのアクセスを停止して消え、ないとの両方を保存します。

ユーザーが手動で真にデータをクリアするためには、ブラウザのキャッシュをクリアしたときのみのlocalStorageは、この方法でクリアされません。

クライアントに保存しないセッションが、サーバ側に保存されています。クッキーは、ユーザーの身元を確認するために、セッションIDに保存されます。

過去には、これらのキャッシュは行わクッキーで保存されます。しかし、クッキーは、クッキーが遅く、非効率的である可能サーバに要求を渡すためにそれらのそれぞれにより、大量のデータを格納するのに適していません。

HTML5では、要求されたデータは、各サーバによって送信されたが、唯一の要求内のデータを使用していません。これは、可能なサイトのパフォーマンスに影響を与えることなく、大量のデータを保存することができます。別のウェブサイトでは、データは異なる領域に格納され、Webサイトが唯一の自分のデータにアクセスすることができます。

ブラウザは、タブ満たすに同一生成元ポリシーを開いたとき、彼らは、そのような伐採権として、ユーザー情報へのアクセスをデータ操作のために繰り返し要求を繰り返し、そうではありませんので、各ページ間の相互アクセスデータのためにその動作することができています。

攻撃CSRFの原則とプロセス

  まだログインしているユーザーを維持しながら、フォームや攻撃を含むコードの内容を送信するために、ユーザーに渡されたフィッシングサイトを参照して、生成された通常のログインユーザを使用してCSRFクッキーは、フロントエンドは、JSを使用することができます要求して人質を送りますユーザーのログインアクセスクッキー、通常のウェブサイトの正常なサイト、サイト上のユーザの手の広がりによる偽造フォームの目的。他のサイトへのフォームが作成、ユーザーが送信し、ユーザーにログオンcsrftoken発行したウェブサイトを避けるために、トークンは(ブラウザでローカルストレージに格納されている)クッキーに保存されていない、コール(WebサイトのフロントエンドJSで識別される{{csrftoken}})、提出トークンは、このウェブサイト(セッションに格納されたサーバー認証トークンデータ)を検証するために、フォームから必要な形状を有する場合。

 

どのようにCSRFの防御

  1. コードを送信
    形式でランダムな数字または文字コードを追加します。ユーザーやアプリケーションを強制することによって相互作用。効果的にCSRF攻撃を抑制します。

  2. リファラーチェック
    チェックページ要求、最も可能性の高いCSRF攻撃の上に非正規を前提としています。

  3. トークン検証
    • HTTPリクエストのコンテンツトークンまたはしない要求は、その要求がCSRF攻撃を拒否されたこととすることができること、ランダムにトークン生成したトークンを認証するためにインターセプタサーバ側を確立する、いかなるトークンが想定されていないのパラメータの形態で添加されます。
    • トークンの必要性ランダム十分
    • 機密性の高い操作は、POSTを使用する必要があります。代わりにGETで、フォームのフォーム形式で提出しました。トークンリークを回避することができます。
  4. HTTPヘッダーとそのカスタム属性を検証

    このような方法は、認証トークンのために使用されています。ここでトークンは、HTTPリクエストパラメータの形に配置されていないが、HTTPヘッダ内に定義されたそれらの特性に入れました。このクラスでのXMLHttpRequestは、クラスは、すべてのHTTPヘッダに1回の要求であることに加えて、このプロパティをcsrftokenことができます。そして、彼らにトークン値。このような方法は、要求にトークンを追加不便を克服します。同じ時間は、リファラー、外出先を通じて他のサイトへのトークンのリークについてのない心配を行い、XMLHttpRequestのリクエストにより、ブラウザのアドレスのアドレスバーに記録されません。

トークンについて

  1. トークンを保存する必要があります(にローカル/ stogrageセッション
  2. クッキーとして有効同期間にトークン加え、あなたはまた、操作の他の方法の多くを持っている必要があります。トークンの有効期限が切れたら、だけに必要もう一度1を取得します。あなたはリフレッシュトークンへのインタフェースを使用することができます。あなたも、保存されたトークン初版発行時間を置くことができます。そして、何が2週間でログに再び余儀なくされました。あなたは(それが必要なときに、トークン寿命が長いとき)、あなたがチェックのためのトークンマネージャの行くを生成する必要がトークンを撤回する必要があるとします。
  3. ローカル/セッションストレージは、ドメイン間での仕事は、タグにクッキーを使用しません:同一生成元ポリシーブラウザベース
  4. 必要性は、暗号化と署名トークンに、そして、あります
  5. OAuthの2にJSONウェブトークンアプリケーション

ホワイトリストクロスドメインリクエストについて

ジャンゴ-CORSは、Djangoのフラスコまたは他の拡張機能を拡張しました

  1. 書き込みミドルウェア、インターセプト処理オプションのミドルウェア
  2. 要求はオプション、そうでない場合opitonsであるかどうかを決定する方法は、そうでなければ、実行のビューに、以下の手順に従って処理を未処理のまま
  3. ホワイトリストとは対照的に、要求のオプションからアクセスドメイン名を削除し、ドメイン名を可能にします、
  4. ホワイトリストは、クロスドメインアクセスを許可するように返された場合は、それ以外の場合は許可されていません

同一生成元ポリシーブラウザ

同一生成元ポリシー(同一生成元ポリシー)、それは同一生成元ポリシーの欠如、ブラウザの通常の機能が影響を受ける可能性がある場合は、ブラウザのコアは、また、最も基本的なセキュリティ機能です、慣例です。ウェブは、同一生成元ポリシーに基づいて構築されると言うことができますが、ブラウザが実現元ポリシーに向けられています。同一生成元ポリシーの特別なプロパティがアクセスするリソースは、同一生成元ポリシーに拘束され、相互に情報を簡単に取得するために異なるサイトを避けるために、ブラウザ自体、ブラウザで、単純に言いました。

いわゆる相同ドメイン、プロトコル、同一のポートを指します。場合は、ブラウザ内の2つのタブページがオープンBaiduのと、Googleのページです。このページは、所属チェックするスクリプトブラウザBaiduのタブページのスクリプトを実行する場合、すなわち、相同かどうかを確認するために、そして百度だけ相同スクリプトが実行されます。非相同、そのデータが要求されている場合、ブラウザは例外となり、コンソールプロンプト年半ばレポートへのアクセスを拒否されました。

:私たちは、ブラウザのようなHTTPリクエストモード取得要求資源、であることを知っているHttp://www.baidu.com:8080/xxxxこれではHTTPプロトコルが要求、www.baidu.comドメイン名、ポート番号は要求がHTTPプロトコルモードを使用していることを意味し、8080で、サーバーは、ドメイン名からサービスを展開www.baidu.com XXXX 8080のポート上のリソースを要求します。

するととき、プロトコル、ドメイン名は、ポートが、あること、異なるソースと同じではありません。

コピー
现在有一个网站:http://www.a.com/a。

https://www.a.com/a          :不同源,协议不同,此处协议是https!

http://www.b.com/a :不同源,域名不同 http://www.a.com:8080/a :不同源,端口不同 http://www.a.com/b :同源 综上,跨域就是请求路径的url不同源。

マニュアルを参照してください:https://developer.mozilla.org/zh-CN/docs/Web/Security/Same-origin_policy

セッション、のlocalStorage、のsessionStorage、異なるクッキー記憶機構

localStorage、のsessionStorageは、クッキーはブラウザに保存されたデータをキャッシュするために使用することができます。

sessionStorage、クッキーは永久的な存在、ブラウザを閉じるか、サーバーへのアクセスを停止して消え、ないとの両方を保存します。

ユーザーが手動で真にデータをクリアするためには、ブラウザのキャッシュをクリアしたときのみのlocalStorageは、この方法でクリアされません。

クライアントに保存しないセッションが、サーバ側に保存されています。クッキーは、ユーザーの身元を確認するために、セッションIDに保存されます。

過去には、これらのキャッシュは行わクッキーで保存されます。しかし、クッキーは、クッキーが遅く、非効率的である可能サーバに要求を渡すためにそれらのそれぞれにより、大量のデータを格納するのに適していません。

HTML5では、要求されたデータは、各サーバによって送信されたが、唯一の要求内のデータを使用していません。これは、可能なサイトのパフォーマンスに影響を与えることなく、大量のデータを保存することができます。別のウェブサイトでは、データは異なる領域に格納され、Webサイトが唯一の自分のデータにアクセスすることができます。

ブラウザは、タブ満たすに同一生成元ポリシーを開いたとき、彼らは、そのような伐採権として、ユーザー情報へのアクセスをデータ操作のために繰り返し要求を繰り返し、そうではありませんので、各ページ間の相互アクセスデータのためにその動作することができています。

おすすめ

転載: www.cnblogs.com/well-666/p/12185098.html