🤕

CSRFとは何かと対策について

2021/11/21に公開

はじめに

自分はlaravel等ではフレームワークの機能としてCSRF対策が組み込まれていることもあり、あまり対策の詳細に関しては考えておりませんでした。。メモ代わりに簡単にまとめます。

CSRF(クロスサイトリクエストフォージュリ)について

攻撃者が利用を罠のサイトに誘い込み、罠のサイトでのクリックや、罠サイトの中のiframeの中の中から自動的に送信させる等といった手法で、サーバーに対して重要な処理(購入処理やパスワードの変更等)を実行させる攻撃。

対策

・CSRF対策の外部のサイトから勝手に実行されると困るようなページに対策を実装するなど必要なページ(物品購入処理やパスワード変更など)を区別する。
・利用者の意図したリクエストであることを確認する(下記に記載)

具体的な手法

利用者の意図したリクエストであることを確認する方法について具体的には下記の方法を用いるようです。
・クライアントのURL(referer)の確認を行う。phpであればpreg_match等を用いてチェックを行う。(ブラウザのrefererを送信されないようにしている利用者に対しては無効)。
・処理の送信時に使用する、第三者が知ることのできない認証(token)等を組み込む。
・重要な処理の場合にパスワードの再確認を行う。(パスワードの変更等でよく見るやつ、あまり多用すると煩わしい)

参考

体型的に学ぶ安全なwebアプリケーションの作り方
https://www.eg-secure.co.jp/wasbook/

Discussion