【PHP】セキュリティ強化 CSRF対策
問い合わせフォームの確認画面に遷移するタイミングでセッションに合言葉(トークン)を保存する。
submitのタイミングでセッションのトークンと一致するかを確認することでCSRFを防ぐことができる。
トークンの生成処理
PHP5の場合
$token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
PHP7の場合
$token = bin2hex(random_bytes(32));
実装
確認画面遷移時
//$token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM)); // php5のとき
$token = bin2hex(random_bytes(32)); // php7以降
$_SESSION['token'] = $token;
<input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
submit時
if( $_POST['token'] != $_SESSION['token'] ){
//(トークンが一致しない場合のエラー処理)
}else{
//(トークンが一致したときの処理)
}
ディスカッション
コメント一覧
まだ、コメントがありません