Debería poder ver que el usuario visitó Amazon.com y Facebook.com antes.
No, no puedes acceder arbitrariamente al historial de navegación.
- Usted puede averiguar cuántas entradas tiene el historial (
history.length
).
- Usted puede volver a cualquiera de estas entradas del historial (por ejemplo,
history.go(-2)
).
- Usted no puede conocer qué son estas entradas, ni el dominio ni la URL.
para manipular el historial de navegación, la aplicación HTML5 necesita leer el historial primero.
Bueno, los detalles de las entradas anteriores existen en la memoria, pero el navegador las oculta de los scripts de contenido. De lo contrario, el hecho de poder acceder al historial entre dominios obviamente causaría problemas de privacidad masivos. Imagine que uno de los sitios anteriores tenía un token de restablecimiento de contraseña en la URL.
Si no es cierto, ¿puede explicarme cómo funciona exactamente esta API de historial?
En HTML5, puedes manipular el estado de la pila de historial, por ejemplo, utilizando history.pushState()
. Esto es particularmente útil para sitios web con mucha interacción AJAX que desean cambiar la URL sin volver a cargar toda la página. 1 Pero solo puede cambiar la URL a las rutas que pertenecen al mismo dominio y solo puede acceder Los objetos de estado para la página actual. Puede encontrar consideraciones de seguridad adicionales en esta revisión de seguridad de la API por Mozilla.
(Tenga en cuenta que en el pasado ha habido un montón de historial de navegación filtra vulnerabilidades que podrían revelar las URL visitadas a través de canales laterales, por ejemplo, al abusar de las propiedades de CSS. Pero estos ataques no están directamente relacionados con la API.)
1 También puede ser útil para un atacante que quiera ocultar el XSS reflejado en la URL cambiando dinámicamente la ruta a algo menos sospechoso. Es por eso que en ese entonces esta extensión de la API ha sido algo controversial .