【PHPセキュリティ】CSRF対策

クロスサイトフォージェリ(CSRF)とは

ユーザーが意図しない操作をユーザー自身の権限を用いて実行させてしまう。
これだと意味わかんね。

例えば、ユーザーがはてなブログにログインする。
で、はてなブログには記事の削除機能がある。これをユーザー自身にさせてしまう。
どっか他のサーバーにはてなブログの記事を削除を実行するページへデータをpostしてしまうページを用意しておく。
それをユーザーが踏んじゃうとユーザー自身が削除したことになってしまう。
恐ろしや。

対策

  • 実行時にパスワードを入力させる。
  • ワンタイムトークンでチェックする

パスワード入力が必要であれば、リダイレクトされてもいきなり削除されないもんね。
でも、パスワード盗まれてたらpostされて実行できちゃうね。
まあ、パスワード盗まれてる時点で終わってんだけどねw
だから、本当は両方やるべき。

そこは利便性を天秤にかけて考える。