CSRF / XSRF CSRF
また、XSRFとして知られているCSRF(クロスサイトリクエストフォージェリ、クロスサイトリクエストフォージェリのドメイン)が、それは2007年に大きなセキュリティリスクインターネット20の1つとして表示された、ネットワーク攻撃です。そのようなSQLスクリプトインジェクション、クロスサイトスクリプティング攻撃と近年のドメインに精通している他の人のような他のセキュリティリスクは、徐々に、多くのサイトはまた、それらに対する防御されているされています。しかし、ほとんどの人々のために、CSRFはまだ外国人の概念です。でも有名なGmailは、2007年末にCSRFの脆弱性が存在し、そのユーザーのGmailビーイングが生じた巨額の損失をハッキング。
セキュリティリスクをもたらすために元ポリシー
[一般(クロスオリジンの埋め込み)を埋め込むクロスドメインのリソースを許可する]クロスドメインの相互作用のためのリソースを処理するとき、我々は、ブラウザの同一生成元ポリシーの制約内で、言及している最後の章の内容を確認します。
以下の埋め込みクロスドメイン・リソースの一般的な例は以下のとおりです。
<script src="..."></script>
クロスドメインスクリプトに埋め込まれたタグ。構文エラー情報は、相同スクリプトでキャプチャすることができます。<img>
組み込み絵。サポートされている画像形式はPNG、JPEG、GIF、BMP、SVGが含まれて...<video>
そして、<audio>
マルチメディアリソースを埋め込まれました。
原理CSRF攻撃行動クロスサイトリクエストフォージェリのリソースに限定されるものではなく、行動を埋め込むの上に起因して、ブラウザの同一生成元ポリシーを使用することです。
CSRF攻撃
- ユーザーがターゲットサーバーAの上にあるサイトを閲覧しました。そして、伐採によって検証。
- cookie_session_idするには、Get、ブラウザのクッキーに保存されました。
- ないうちサーバA、および障害session_idのではユーザーがハッキングされ、サーバーB.上にあるサイトを閲覧する前に
- サーバBサイト
<img src = "http://www.altoromutual.com/bank/transfer.aspx?creditAccount=1001160141&transferAmount=1000">
埋め込まれたリソースは、ターゲットサーバAにアクセスするためにユーザーを強制的役割を果たしました - ユーザーがログアウトされていないと、サーバーAセッションIDの有効期限が切れていないので、要求が確認され、要求が違法に実行されます。
CSRFを防御する方法
- リファラ検証ソリューション。
最も簡単な方法は、ブラウザのページを参照の頭に依存します。ほとんどのブラウザは、ページ要求を送信し、Webサーバを、教えてくれます。以下のような:
POST /bank/transfer.aspx HTTP/1.1 Referer: http://evilsite.com/myevilblog User-Agent: Mozilla/4.... Host: www.altoromutual.com Content-Length: 42 Cookie: SessionId=x3q2v0qpjc0n1c55mf35fxid;
検証を通じてサイトDaolian画像リファラリソースを防ぐために、多くのサイト。
しかし、この解決策は完璧ではないので、ブラウザのいくつかのバージョンに存在することができるHTTPヘッダを改ざんの可能性。
- トークンソリューション
ユーザーがログオフすると、タイムアウト後の期間が満了したように、トークンの解決策は、フォーム、またはフォームにパラメータを追加します
<form id="transferForm" action="https://www.altoromutual.com/bank/transfer.aspx" method="post"> Enter the credit account: <input type="text" name="creditAccount" value=""> Enter the transfer amount: <input type="text" name="transferAmount" value=""> <input type="hidden" name="xsrftoken" value="JKBS38633jjhg0987PPll"> <input type="submit" value="Submit"> </form>
トークンは、HTTPでのカスタムリクエストヘッダパラメータに追加されたサーバまたは動的に生成
POST /bank/transfer.aspx HTTP/1.1 Referer: https://www.altoromutual.com/bank xsrftoken: JKBS38633jjhg0987PPll User-Agent: Mozilla/4.... Host: www.altoromutual.com Content-Length: 42 Cookie: SessionId=x3q2v0qpjc0n1c55mf35fxid; creditAccount=1001160141&transferAmount=10
発行トークンソリューションは、コードの終了前後の巨大な変化です。そして、認証のために、動的に生成されたトークンとトークンのすべてのステップは、それはまた、追加のリソースのオーバーヘッドを引き起こす可能性があります。あなたは重要な操作に加えてトークン検証ロジックを配置しようとすることができます。しかし、フロントとリア側のコードに変更し、検証トークン持っもたらした消費、それは慎重に検討する必要があります。
- userIdソリューション
変更トークン側のロジックの前と後に、そのような必要性に関して、その原因は、リソースのオーバーヘッドの方法以外に、小さな追加の注意事項があります。ユーザーごとにキーがデータ要求である場合には、バックエンドインターフェイスのデザインは、関連のuserIdを提示する必要があります。インターフェイスは、クロスサイトリクエストフォージェリに対するセキュリティをさらに強化することができるようになりますようにはuserIdのlocalStorageは、ブラウザに保存することができます。
概要
CSRFは、唯一のハッカーの攻撃ではありません覚えておいてください、あなたは、クロスサイトスクリプティング攻撃ドメインXSS、セキュリティバイパスハッカー缶などの他のシステムのセキュリティの脆弱性を、持っている場合は、CSRFの拡大を含め、そこにCSRFを防ぐ方法と密接に関係なく防衛のあなたのライン内のさまざまな攻撃は、ゴムスタンプになります。
CSRFは、非常に大きな攻撃への危険、および予防することが非常に困難です。主にCSRF攻撃に対するものの、いくつかの現在の防衛戦略ではなく、完璧なソリューション。いくつかの新しいプログラムは、このような異なる動的パスワードを使用して、要求ごととして、検討されている、プログラムがリファラーやトークンを組み合わせ、あるいはHTTPの仕様を変更しようとするが、これらの新しいプログラムは、まだ成熟していない、と正式に使用に入れなければ広く受け入れられている業界は時間を必要とします。これに先立ち、我々は唯一のCSRFに害を最小限にするように、システムの実際の状況に基づいて、最も適切な戦略を選択し、CSRFに十分な注意を払います。