CSRFのあれこれ

こんにちわ、syachiです。

 

djangoで知ったCSRFToken
徳丸本の内容を確認しながら何なのかを確認する


■影響
罠サイト閲覧によって、クレジット決済やメール送信といった重要な処理を勝手にやってしまう

 

 

■特徴
アプリケーションが動作するだけで、利用者の個人情報が盗まれるといったことはない

 

 

■発生個所
 Cookieのみでセッション管理が行われているサイト
 HTTP認証、TLSクライアント証明書のみで利用者の識別が行われているサイト


ログインした状態でPWを入力すれば変更することができるページがあるとする
悪意あるサイト上に、上記URLに任意のPWを設定したフォームを用意する
対象者がそれをクリックした際、対象者のブラウザ上に今まさにあるCookieのセッション情報を使ってそのままログイン状態として処理させてしまう

 

 

■確認画面があっても油断してはいけない
・hiddenパラメータでの受け渡し⇒見えてないだけで上記と同じ状況
・セッション変数でパラメータ受け渡し⇒セッション変数を取り出すiframeを時間差で用意

 

■対策

 トークンの使用/直前のPW認証/Refererの確認 

 

■その他
 CSRFのHTTPリクエストでは、Refererが正規と違う
 ⇒ただし通常はその点気にしないのできちんと確認する仕組みがないと対策にならない

 XSSCSRFの違い
 攻撃者が悪意あるサイトを用意し、対象者がそれをクリックするまでは同じ
XSSの場合、任意のHTMLやJavaScriptのコードをブラウザ上で実行可能
CSRFの場合、そのまま正規のサーバへ向けて何かしらの決められたアクションを実行するのみ

 

 


■単語・調べたいこと
Referer:実際はHTTPレスポンスを生成した呼び出しページのURLが載る
iframe

 →インラインフレーム、別のページを埋め込むことができる
ファイルアップロード時に必要なHTTPヘッダ
multipart/form-data, boundary
 ⇒というかHTTPのヘッダをいろいろ見てみたい

MIMEタイプ

 text/plain

 application/x-www-form-urlencoded

 multipart/form-data

プリフライトリクエスト(徳丸本P.85をまとめる)

 

 

それでは。