メモ, PHP【PHP TIPS】 58. すごいリロード対策紹介されているのはシンプルなワンタイムトークン.単純なリロード対策であれば ticket の値は乱数でなくても良い.ここを乱数にすることで CSRF 対策も兼ねている.ただこの方法は,場合によってはフォームを正常に送信できなくなってしまう問題がある. 例えば,入力画面→入力確認画面と遷移してから別のウィンドウで入力画面→入力確認画面と遷移すると,前の入力確認画面のフォームは ticket が無効になり,フォームを送信できなくなる(複数画面同時編集ができない). 解決策としては,発行したトークンを全て記憶しておき,POST されたトークンと照合する方法がある. confirm.php session_start(); $token = sha1(uniqid(mt_rand(), true)); // トークンをセッションに追加す