前提・実現したいこと
CSRF対策にトークンを使おうと考えています。
POSTでtokenを送信し、filter_input に入れると消えてしまうのですが、どのように書き換えれば、POSTとSESSIONのtokenがいっちするようになるのでしょうか。
該当のソースコード
- token1.php
<?php session_start(); //tokenを用意 if(!isset($_SESSION['token'])) { $_SESSION['token'] = uniqid('', true); echo '$_SESSION token'."<br />". $_SESSION['token']; } // トークンを代入 $token = $_SESSION['token']; echo '$token'."<br />".$token ?> <!DOCTYPE html> <html> <head> </head> <body> <form action= 'token2.php' method = post> <input type="hidden" name="token" value="<?php echo $token; ?>"> <input type="submit" value="送信する"> </form> </body> </html>
- token2.php
<?php session_start(); //post token の受け取り $token = filter_input(INPUT_POST, $_POST['token']); echo '$token'."<br />".$token; echo "<br />"; //session token と post token が一致しているかの確認 if ($token === $_SESSION['token']) { //一致の表示 echo 'token が一致しました。'; } else{ //不一致の表示 echo 'token が不一致です。'; }
発生している問題・エラーメッセージ
- token1.phpの結果
$token
//tokenの表示
- token2.phpの結果
$token
token が不一致です。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/20 03:11
2020/04/20 04:53
退会済みユーザー
2020/04/20 07:14
2020/04/22 03:23