¿Qué tipo de información sería peligrosa revelar a través de un referente: encabezado?
Cualquier tipo de información privada o confidencial no debe exponerse a sitios web externos, todo depende de su aplicación. Las cosas más comunes a considerar son:
- ID de sesión (a veces puedes verlas en parámetros de URL como? PHPSESSID = ....)
- ID de usuario / ID de recurso (pueden dar una pista a un tercero sobre quién es exactamente el usuario)
- cualquier tipo de tokens sensibles como anti CSRF tokens, confirma acción tokens, cuenta tokens de activación, etc.
- algunos datos confidenciales del usuario, por ejemplo, términos de búsqueda que utilizó en su sitio web.
¿Cuál es un mejor enfoque? Haga clic para redirigir, o la redirección HTTP 301/302
El redireccionamiento 30x es perfectamente correcto desde el punto de vista técnico, ya que perderá el encabezado del Referer. Considere usar un 'clic para redirigir' si desea informar a sus usuarios sobre la redirección que se está produciendo.
Si se utiliza una redirección 301/302 o Javascript a una URL externa, ¿qué precauciones de seguridad adicionales deben tomarse?
Por ejemplo, imagine que el atacante configura un sitio de phishing con el diseño de su sitio y un formulario de inicio de sesión falsificado y utiliza su redirección abierta para atraer a los usuarios a su sitio web, reuniendo sus nombres de usuario y contraseñas. Por ejemplo, podría enviar una campaña de spam con las URL que apuntan a su guión de redireccionamiento. Es una vulnerabilidad de seguridad común comúnmente llamada redirección abierta . La protección de los clics sería mejor en este sentido, ya que se informaría a los usuarios sobre la redirección que se está produciendo, pero es mucho mejor tener un proceso de validación manual / semiautomática de destinos de redirección para que pueda monitorear las URL maliciosas y bloquearlas. .
Nunca tendrás un control total sobre las URL de destino, ya que los atacantes pueden ocultarte el contenido malicioso de muchas maneras, pero tener un proceso listo para bloquear las URL no deseadas te permitirá desarrollar mejores filtros. Dominios o implementar una función de listas grises: para URL buenas conocidas, redireccionamiento 301, mal conocido - 501 y para todos los demás, confirmación del usuario. Esto es lo que Facebook hace más o menos.