2011-04-21 17 views
5

Pensé que estaba siendo muy hábil utilizando la variable $_SERVER['HTTP_REFERER'] en garantía mi secuencia de comandos se llamaba desde la página correspondiente.

suerte, cuando realicé una redirección header('Location: yourPathHere.php') en mi navegador de pruebas, no sería establecer la variable de $_SERVER['HTTP_REFERER']. Así que lo busqué en http://php.net/manual/en/reserved.variables.server.php, sólo para descubrir esta ...

'HTTP_REFERER'

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

Así que mi pregunta es: ¿Cómo puedo garantía mi página está siendo navegado a partir de una fuente de confianza?

EDITAR: Para aclarar preguntas con respecto a la sección de comentarios. Estoy tratando de evitar XSRF (falsificación de solicitudes entre sitios).

+10

no se puede. ¿De que estás asustado? – SLaks

+0

En resumen, XSS (cross-site scripting). – Zak

+0

@ Zak: ¿Cómo se relaciona XSS con "¿de dónde vienen mis visitantes?" Estoy confundido, por favor elabora. – Piskvor

Respuesta

5

Confiar en cualquier entrada originada por el usuario para la verificación de solicitud casi no es mejor que ninguna verificación.

Debe leer esto section on CSRF countermeasures de Wikipedia para obtener un resumen básico de los enfoques disponibles para abordar el problema.

En resumen:

sitios web tienen varias contramedidas CSRF disponibles:

  • que requieren un secreto, símbolo específico del usuario en todos los envíos de formularios y URLs de efectos secundarios impide CSRF; sitio del atacante no puede poner el correcto token en sus comunicaciones
  • que requiere el cliente para proporcionar los datos de autenticación en la misma petición HTTP utilizado para realizar cualquier operación con implicaciones de seguridad (transferencias de dinero, etc.)
  • Limitar el tiempo de vida de las cookies de sesión
  • Asegurarse de que no hay ningún archivo crossdomain.xml de conceder el acceso no deseado a películas flash
+0

Esto es exactamente lo que estaba buscando, simplemente no sabía cómo expresarlo. ¡Gracias! – Zak

0

¿La página que refiere va también bajo su control? Si es así, podría intentar configurar algunas variables de sesión del lado del servidor cuando un usuario visita la página A y buscarlas cuando intente acceder a la página B. Pero como han dicho otros encuestados, esto no está relacionado con la prevención de XSS.

+0

Tiene razón, quise decir XSRF (falsificación de solicitudes entre sitios). Mis disculpas por la confusión. – Zak

Cuestiones relacionadas