CSRF
わかってるようでわかってないので一度知っておきたい
サイトを跨ぐ偽造リクエスト送信
イメージこれで合ってる?
code:image_of_csrf.html
<input type="hidden" name="name" value="名無しさん">
<input type="hidden" name="body" value="私は●●を爆破します!">
</form>
<script>
document.getElementById('form').submit();
</script>
動作
訪問者はウェブサービスAにログインしている
訪問者がCSRF仕込んだ罠サイトBに来た
罠サイトBでは、Aの投稿ページにpostするリクエストを送る
たとえば文面を爆破予告にする
訪問者が爆破予告したことになる
対策:訪問者
クリティカルなサービスにログインしているときに、他のサービスを使わない
対策:ウェブサービス側
CSRFできないようにする
この例では
ウェブサービスAが、Aとは別のオリジンからのリクエストを無効にする
外からpostできないようにする
「ログインしてないとできないんだから問題ないでしょ?」はダメ
そこを狙って「訪問者の "ログイン済情報"」を使うのがCSRF
詳しい技術は知らんのでQiita読んで