voy a intentar ayudar un poquito , podrias implementar un token que hara algo mas seguro la verificacion , te realize un ejemplo
un_archivo_cualquiera.php
Código PHP:
Ver original
$rand= rand(); // salt aleatorio pongo de ejemplo rand()
// funciona con las 2 cadenas
$pagina = "http://" . $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
// $p = $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"];
// creamos el token , puedes generar el token como mas te guste yo puse este ejemplo
// concatenamos el salt con la url y generamos un hash
$hash = hash('whirlpool',$rand.$pagina);
// creamos la session para su postrior verificacion con el hash
$_SESSION['TOKEN'] = $hash;
// creamos la session para guardar la url para su posterior verificacion
$_SESSION['REFERER'] = $pagina;
// creamos la cookie para crear el hash en control y verificar
control.php
Código PHP:
Ver original
// capturamos la url de donde vino
$url = $_SERVER["HTTP_REFERER"];
// $p = str_replace("http://", "", $_SERVER["HTTP_REFERER"]);
// comprobamos que existan todas las variables
if(isset($_SESSION['TOKEN']) and
isset($_SESSION['REFERER']) and
isset($_COOKIE['TOKEN'])) {
// creamos el hash
$hash = hash('whirlpool',$_COOKIE['TOKEN'].$url);
// verificamos ambos hash y ambos referer
if($_SESSION['TOKEN'] === $hash and $_SESSION['REFERER'] === $url)
{
// continuamos
echo 'correcto';
}
}
// eliminamos los datos
unset($_COOKIE['TOKEN'],$_SESSION['TOKEN'],$_SESSION['REFERER']);
ay puntos que debes de reforzar tan solo es un ejemplo , por ejemplo los nombres que no sean tan comunes y la cookie intentar mandarlo codificada o encriptada estaria muy bien, un buen salt aleatorio ,un buen hashing etc...
saludos