У меня есть функция регистрации пользователя, и я хочу проверить токен CSRF внутри функции. Я не опубликовал всю функцию ниже, потому что она довольно длинная, но я добавил важную часть.
function user_register ($ link) {
if(isset($_POST['register'])) {
if($_SESSION['form_token'] !== $_POST['form_token'])
echo "Tokens don't match";
Эта функция генерирует токен:
function make_form_token() {
$token = base64_encode(openssl_random_pseudo_bytes(32));
$_SESSION['form_token'] = $token;
return $token;
} // end CSRF token generation
И у формы есть скрытое поле с токеном:
<input type="submit" class="btn btn-danger" name="register" value="Register">
<input type="hidden" name="form_token" value="<?php echo $token ?>">
Жетоны никогда не совпадают, и я не могу понять, почему?
Задача ещё не решена.
Других решений пока нет …