CSRF対策のトークンの$_SESSIONがうまく受け取れません
現在、ユーザーの新規登録でCSRFの対策としてトークンを発行したりしているのですがなぜか受け取りがうまくいきません。
発生している問題・エラーメッセージ
これは一例です。
dJFdi0MSgRrdZMByfBNEZzVCgtE85SNb0gboUR2w4/w= O6mQVzRizLd3ZmXN4Mu+MjpGYv2aTJ68WQyYF/fGxCE=不正アクセスの可能性あり
該当のソースコード
registration_mail_form.html
PHP
1<?php 2require 'php/registration_mail_form.php'; 3echo $_SESSION["token"] . "<br>"; 4echo $token; 5?> 6<!DOCTYPE html> 7<html lang="ja"> 8 9<head> 10 <meta charset="utf-8"> 11 <link rel="stylesheet" href="css/reset.css"> 12 <link rel="stylesheet" href="css/style.css"> 13 <title>Findeeply</title> 14</head> 15 16<body class="body"> 17 <?php include($_SERVER['DOCUMENT_ROOT'] . '/Findeeply/inc/header.php'); ?> 18 <h1>メール登録画面</h1> 19 20 <form action="registration_mail_check.html" method="post"> 21 22 <p>メールアドレス:<input type="text" name="mail" size="50"></p> 23 24 <input type="hidden" name="token" value="<?=$token?>"> 25 <input type="submit" value="登録する"> 26 27 </form> 28</body> 29 30</html> 31
registration_mail_form.php
PHP
1<?php 2session_start(); 3 4header("Content-type: text/html; charset=utf-8"); 5 6//クロスサイトリクエストフォージェリ(CSRF)対策 7$_SESSION['token'] = base64_encode(openssl_random_pseudo_bytes(32)); 8$token = $_SESSION['token']; 9 10//クリックジャッキング対策 11header('X-FRAME-OPTIONS: SAMEORIGIN'); 12 13?>
registration_mail_check.html
php
1<?php 2require 'php/registration_mail_check.php'; 3echo $_SESSION["token"]; 4?> 5<!DOCTYPE html> 6<html lang="ja"> 7 8<head> 9 <meta charset="utf-8"> 10 <link rel="stylesheet" href="css/reset.css"> 11 <link rel="stylesheet" href="css/style.css"> 12 <title>Findeeply</title> 13</head> 14 15<body class="body"> 16 <?php include($_SERVER['DOCUMENT_ROOT'] . '/Findeeply/inc/header.php'); ?> 17 <h1>メール確認画面</h1> 18 19 <?php if (count($errors) === 0): ?> 20 21 <p><?=$message?></p> 22 23 <p>↓このURLが記載されたメールが届きます。</p> 24 <a href="<?=$url?>"><?=$url?></a> 25 26 <?php elseif(count($errors) > 0): ?> 27 28 <?php 29foreach($errors as $value){ 30 echo "<p>".$value."</p>"; 31} 32?> 33 34 <input type="button" value="戻る" onClick="history.back()"> 35 36 <?php endif; ?> 37</body> 38 39</html> 40
registration_mail_check.php
php
1<?php 2session_start(); 3echo $_SESSION["token"] . "<br>"; 4echo $_POST["token"]; 5header("Content-type: text/html; charset=utf-8"); 6 7//クロスサイトリクエストフォージェリ(CSRF)対策のトークン判定 8if ($_POST['token'] != $_SESSION['token']){ 9 echo "不正アクセスの可能性あり"; 10 exit(); 11} 12 13//クリックジャッキング対策 14header('X-FRAME-OPTIONS: SAMEORIGIN'); 15 16?> 17
補足情報
.htaccessでhtml内にPHPが書けるようにしています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。