前にも質問したのですが解決しないので再質問します。
session1.php
php
1<?php 2session_start(); 3//安全安心なトークンを作成(32桁数) 4$TOKEN_LENGTH = 16; 5$tokenByte = openssl_random_pseudo_bytes($TOKEN_LENGTH); 6$csrfToken = bin2hex($tokenByte); 7 8//セッションに設定 9$_SESSION['csrfToken'] = $csrfToken; 10?> 11<html> 12 13<body> 14 <form method="post" action="session2.php"> 15 //formのhidden値に設定 16 <input type='text' name='csrfToken' value='<?=$csrfToken?>'> 17 <input type="submit"> 18 </form> 19</body> 20 21</html> 22
session2.php
php
1<?php 2session_start(); 3if (!empty($_POST['csrfToken'])){ 4 if(!empty($_SESSION['csrfToken'])){ 5 echo $_POST['csrfToken'] . "<br>"; 6 echo $_SESSION['csrfToken'] . "<br>"; 7if ($_POST['csrfToken'] === $_SESSION['csrfToken']) { 8 echo "正常処理"; 9} else { 10 echo "CSRF攻撃が発生"; 11} 12}else{ 13 echo "session"; 14 } 15}else{ 16 echo "post"; 17}
出力結果
一例
022b9938a6b413e48fd43cd360252a7f 8e8f48e274e487382d25d15c8b7771bd CSRF攻撃が発生
この例だと前のページで022b9938a6b413e48fd43cd360252a7fと表示されているので、
おそらくsessionの受け渡しができていないのかと思います。
解決策を教えてください。
回答1件
あなたの回答
tips
プレビュー