Pregunta

¿Cuál es la forma más confiable y segura de determinar qué página envió o llamó (a través de AJAX) a 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 solo provenga de solicitudes que se originen en mi sitio. < br>
Editar: Estoy buscando verificar que se llame a un script que realiza una serie de acciones desde una página de mi sitio web.

¿Fue útil?

Solución

El navegador del cliente envía el REFERER como parte del protocolo HTTP y, por lo tanto, no es confiable. Puede que no esté allí, puede estar falsificado, no puedes confiar en él por razones de seguridad.

Si desea verificar si una solicitud proviene de su sitio, bueno, 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 eso.

Otros consejos

Lo que he encontrado mejor es un token CSRF y guárdelo en la sesión para los enlaces donde necesita verificar el referente.

Entonces, si está generando una devolución de llamada FB, entonces se vería así:

$token = uniqid(mt_rand(), TRUE);

Lo que he encontrado mejor es un token CSRF y guárdelo en la sesión para los enlaces donde necesita verificar el referente.

Entonces, si está generando una devolución de llamada FB, entonces se vería así:

if(empty(

Lo que he encontrado mejor es un token CSRF y guárdelo en la sesión para los enlaces donde necesita verificar el referente.

Entonces, si está generando una devolución de llamada FB, entonces se vería así:

$token = uniqid(mt_rand(), TRUE);

Lo que he encontrado mejor es un token CSRF y guárdelo en la sesión para los enlaces donde necesita verificar el referente.

Entonces, si está generando una devolución de llamada FB, entonces se vería así:

<*>

Entonces el index.php se verá así:

<*>

Sé de sitios seguros que hacen el equivalente de esto para todas sus páginas seguras.

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

Entonces el index.php se verá así:

<*>

Sé de sitios seguros que hacen el equivalente de esto para todas sus páginas seguras.

GET['token']) ||

Lo que he encontrado mejor es un token CSRF y guárdelo en la sesión para los enlaces donde necesita verificar el referente.

Entonces, si está generando una devolución de llamada FB, entonces se vería así:

$token = uniqid(mt_rand(), TRUE);

Lo que he encontrado mejor es un token CSRF y guárdelo en la sesión para los enlaces donde necesita verificar el referente.

Entonces, si está generando una devolución de llamada FB, entonces se vería así:

<*>

Entonces el index.php se verá así:

<*>

Sé de sitios seguros que hacen el equivalente de esto para todas sus páginas seguras.

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

Entonces el index.php se verá así:

<*>

Sé de sitios seguros que hacen el equivalente de esto para todas sus páginas seguras.

GET['token'] !==

Lo que he encontrado mejor es un token CSRF y guárdelo en la sesión para los enlaces donde necesita verificar el referente.

Entonces, si está generando una devolución de llamada FB, entonces se vería así:

$token = uniqid(mt_rand(), TRUE);

Lo que he encontrado mejor es un token CSRF y guárdelo en la sesión para los enlaces donde necesita verificar el referente.

Entonces, si está generando una devolución de llamada FB, entonces se vería así:

<*>

Entonces el index.php se verá así:

<*>

Sé de sitios seguros que hacen el equivalente de esto para todas sus páginas seguras.

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

Entonces el index.php se verá así:

<*>

Sé de sitios seguros que hacen el equivalente de esto para todas sus páginas seguras.

SESSION['token']) { show_404(); } //Continue with the rest of code

Entonces el index.php se verá así:

<*>

Sé de sitios seguros que hacen el equivalente de esto para todas sus páginas seguras.

SESSION['token'] = $token; $url = "http://example.com/index.php?token={$token}";

Entonces el index.php se verá así:

<*>

Sé de sitios seguros que hacen el equivalente de esto para todas sus páginas seguras.

Uso de $ _SERVER ['HTTP_REFERER']

  

La dirección de la página (si la hay) que refirió al agente de usuario a   página actual. Esto es establecido por el agente de usuario. No todos los agentes de usuario   establezca esto, y algunos brindan la capacidad de modificar HTTP_REFERER como   característica. En resumen, realmente no se puede confiar.

if (!empty(

Uso de $ _SERVER ['HTTP_REFERER']

  

La dirección de la página (si la hay) que refirió al agente de usuario a   página actual. Esto es establecido por el agente de usuario. No todos los agentes de usuario   establezca esto, y algunos brindan la capacidad de modificar HTTP_REFERER como   característica. En resumen, realmente no se puede confiar.

<*>SERVER['HTTP_REFERER'])) { header("Location: " .

Uso de $ _SERVER ['HTTP_REFERER']

  

La dirección de la página (si la hay) que refirió al agente de usuario a   página actual. Esto es establecido por el agente de usuario. No todos los agentes de usuario   establezca esto, y algunos brindan la capacidad de modificar HTTP_REFERER como   característica. En resumen, realmente no se puede confiar.

<*>SERVER['HTTP_REFERER']); } else { header("Location: index.php"); } exit;

No hay una forma confiable de verificar esto. Está realmente bajo la mano del cliente decirle de dónde viene. Podrías imaginarte usar cookies o información de sesiones puestas solo en algunas páginas de tu sitio web, pero hacerlo rompería la experiencia del usuario con marcadores.

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 ajax llamó y luego verificar en la sesión si tiene un valor de página de referencia y realizar la acción de otra manera, ninguna acción.

Mientras que, por otro lado, cuando solicite una 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top