Вы пытаетесь предотвратить подделку URL на этой странице, или notes.php
?
Не видя notes.php
или каких-либо других страниц, трудно сказать. Но чтобы предотвратить фальсификацию URL, всегда полезно проверить $_SERVER['HTTP_REFERER']
на чувствительных страницах, выполнив что-то вроде:
if ($_SERVER['HTTP_REFERER'] !== "previous_page.php") {
header("Location: error_page.php");
session_destroy();
exit;
}
Но это не полное доказательство, потому что если злоумышленник находится на previous_page.php
, он может просто перейти на страницу, которую мы пытаемся защитить, поэтому необходима дополнительная защита.
Вы можете (и должны) внедрить систему токенов. Это делается так:
$_SESSION['token'] = md5(uniqid(rand(), TRUE));
Это создаст красивую длинную строку, уникальную для человека, просматривающего эту страницу. Смысл этого состоит в том, чтобы передать эту переменную сеанса на следующую страницу как переменную $_GET
, а затем сравнить их, чтобы убедиться, что они равны друг другу. Это делается так:
$token = $_SESSION['token'];
header("Location:notes.php?user=$userEmail&token=$token");
//...then, on notes.php:
if ($_GET['token'] !== $_SESSION['token']) {
header("Location: error_page.php");
session_destroy();
exit;
}
Однако, очень умный человек мог обойти это. Я бы посоветовал провести дополнительные исследования «Подделки CSRF». Надеюсь, это направит вас в правильном направлении.