シンクロナイザートークンパターンを使用してCSRF(CSRFはクロスサイトリクエスト偽装を意味する)を防止することについて読んできましたが、実際にどのように安全であるかはわかりません。シンクロナイザートークンパターンを使用してCSRFを安全に保護する方法は?
のは、私は2つのURLで偽の銀行サイトfakebank.comを持っているとしましょう:
fakebank.com/withdrawForm.html
- 撤退 を行うには、このURLにPOST - 撤退お金のフォーム
fakebank.com/doWithdraw
を表示GETリクエストセキュリティ上の欠陥の
私の理解では、maliciousSite.com
がfakebank.com/doWithdraw
にPOSTリクエストを偽装できるということです、そしてあなたが現在fakebankにログインしている場合、POSTは成功するでしょう。
シークレットコードをfakebank.com/withdrawForm.html
に埋め込むシンクロナイザートークンパターンを実装しています。 maliciousSite.com
そのフォームのGETリクエストを偽装し、html結果を解析し、トークンを取得してから、そのトークンでPOSTリクエストを作成できませんか?
これは、fakebank.comがHTTPリファラーまたはオリジンをチェックしていないか、またはmaliciousSite.com
がリファラー/オリジンがfakebank.comであることをうまく偽装していることを前提としています。
攻撃を開始するためにユーザーのブラウザにJavaScriptを注入できるのであれば、GET要求を行うjqueryを単純に埋め込んで解析し、POSTを同じ '
これがまさにポイントです。ブラウザのSame Origin Policyは、GET他のサイトへのリクエストを許可していません。したがって、ブラウザ内でJavasciptを使用するだけで、別のサイトからCSRFトークンを取得することはできません。これは安全である、と
maliciousSite.com
は、単に、GET
を行うトークンを盗み、その後POST
を行うことができない理由出典
2013-04-17 01:13:42 deceze