Pregunta

¿Es posible verificar quién ingresa a su sitio web en PHP? Tengo una aplicación web (escrita en PHP) que solo debería permitir a los usuarios ingresar desde algunos sitios web en particular. ¿Es posible obtener los sitios web de referencia examinando el objeto _Request ? En caso afirmativo, ¿cómo?

¿Fue útil?

Solución

Sí, pero tenga en cuenta que algunos servidores proxy y otras cosas eliminan esta información, y se puede falsificar fácilmente. Así que nunca confíes en ello. Por ejemplo, no piense que su aplicación web está segura de CSRF porque verifica el referencia para que coincida con su propio servidor.

$referringSite = 

Sí, pero tenga en cuenta que algunos servidores proxy y otras cosas eliminan esta información, y se puede falsificar fácilmente. Así que nunca confíes en ello. Por ejemplo, no piense que su aplicación web está segura de CSRF porque verifica el referencia para que coincida con su propio servidor.

<*>

Si solo desea permitir solicitudes de un dominio específico, deberá analizar parte de la URL para obtener el dominio de nivel superior. Como he aprendido más, esto se puede hacer con PHP parse_url () .

Como andyk señala en los comentarios, también tendrá que permitir www.example.com y ejemplo. com.

SERVER['HTTP_REFERER']; // is that spelt wrong in PHP ?

Si solo desea permitir solicitudes de un dominio específico, deberá analizar parte de la URL para obtener el dominio de nivel superior. Como he aprendido más, esto se puede hacer con PHP parse_url () .

Como andyk señala en los comentarios, también tendrá que permitir www.example.com y ejemplo. com.

Otros consejos

Si bien puede mirar $ _SERVER ['HTTP_REFERER'] para obtener el sitio de referencia, no apueste a la granja. El navegador establece este encabezado y se falsifica fácilmente.

Si es crítico que solo personas provenientes de referentes específicos vean su sitio, no use este método. Tendrá que encontrar otra forma, como autenticación básica, para proteger su contenido. No estoy diciendo que no debas usar esta técnica, solo ten en cuenta que no es infalible.

Por cierto, también puede bloquear referencias en el nivel de apache usando mod_rewrite .

No puede confiar en el referente. A pesar de provenir de la matriz $ _SERVER , en realidad es un valor suministrado por el usuario / navegador y se falsifica fácilmente, utilizando cosas como Firefox complemento RefControl .

Debe examinar la matriz $ _SERVER para la clave 'HTTP_REFERER'.

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