¿Cuál es la forma más confiable y segura de determinar qué página envió o llamó (a través de AJAX) la página actual? No quiero usar el $_SERVER['HTTP_REFERER']
, debido a la (falta de) confiabilidad, y necesito que la página a la que se llama provenga solo de solicitudes que se originan en mi sitio.
Editar: Estoy buscando verificar que se esté llamando a un script que preforma una serie de acciones desde una página de mi sitio web.
php
http-referer
UnkwnTech
fuente
fuente
$_SERVER[REMOTE_ADDR]
.Respuestas:
El REFERER es enviado por el navegador del cliente como parte del protocolo HTTP y, por lo tanto, no es confiable. Puede que no esté allí, puede que esté falsificado, simplemente no puedes confiar en él si es por razones de seguridad.
Si desea verificar si una solicitud proviene de su sitio, no puede, pero puede verificar que el usuario haya estado en su sitio y / o esté autenticado. Las cookies se envían en solicitudes AJAX para que pueda confiar en ellas.
fuente
Lo que mejor he encontrado es un token CSRF y lo guardo en la sesión para los enlaces donde necesita verificar la referencia.
Entonces, si está generando una devolución de llamada de FB, se vería así:
Entonces el index.php se verá así:
Sé de sitios seguros que hacen el equivalente a esto para todas sus páginas seguras.
fuente
$_GET['token'] == $_SESSION['token']
y no$_GET['token'] !== $_SESSION['token']
?Usando $ _SERVER ['HTTP_REFERER']
fuente
No existe una forma fiable de comprobarlo. Realmente está en manos del cliente para decirle de dónde vino. Puede imaginar usar cookies o información de sesiones colocada solo en algunas páginas de su sitio web, pero al hacerlo, su experiencia de usuario con marcadores se rompería.
fuente
Solo nos queda una opción después de leer todos los problemas de referencias falsas: es decir, la página que deseamos rastrear como referencia debe mantenerse en sesión, y como se llama ajax luego verificar en la sesión si tiene un valor de página de referencia y realizar la acción de otra manera no acción.
Mientras que, por otro lado, cuando solicita cualquier página diferente, haga que el valor de la sesión de referencia sea nulo.
Recuerde que la variable de sesión se establece solo en la solicitud de la página deseada.
fuente