protección de la ruta de las cookies dentro del mismo dominio

13

La respuesta a esta pregunta acerca de cómo las cookies son potencialmente vulnerables entre subdominios despertó mi curiosidad.

Por lo que sé, si una cookie está configurada en una subruta del mismo dominio ( www.example.com/dogs ), no podrá acceder a ninguna otra ruta, a menos que sea una subcarpeta de la ruta. es decir, ni www.example.com/cats ni www.example.com/ deberían tener acceso a esas cookies, pero www.example.com/dogs/labrador tendría.

Continuando con la lectura , veo que es posible obtener cookies de diferentes rutas:

  

Es importante tener en cuenta que la restricción de ruta no protege contra la lectura no autorizada de la cookie desde una ruta diferente. Se puede omitir fácilmente con un DOM simple (por ejemplo, creando un elemento iframe oculto con la ruta de la cookie y luego accediendo a la propiedad contentDocument.cookie de iframe). La única forma de proteger el acceso a las cookies es mediante el uso de un dominio o subdominio diferente, debido a la misma política de origen.

Si ese es el caso, ¿qué seguridad (o incluso funcionalidad) proporciona la ruta de acceso a las cookies? Y si se puede leer utilizando un iframe, ¿por qué no se puede acceder directamente en javascript? ¿Esta "restricción" en realidad da una falsa sensación de seguridad?

    
pregunta Yoav Aner 05.03.2012 - 19:56
fuente

1 respuesta

21

La ruta de las cookies no proporciona ninguna seguridad (en la mayoría de las situaciones del mundo real).

Es importante comprender que la especificación de cookies es una tecnología antigua. Se remonta a los primeros días de la web. El modelo de seguridad de la web ha evolucionado desde entonces y se ha pensado con más cuidado. El modelo de seguridad para las cookies no ha evolucionado de manera correspondiente.

Como otro ejemplo de desajustes de impedancia entre el modelo de seguridad de la web y las cookies, la política del mismo origen trata a www.example.com:80 como un origen diferente a www.example.com:81 , pero se consideran idénticas a los fines de las cookies. Puede encontrar más información sobre rarezas de seguridad con cookies de Michal Zalewski.

Las cookies pueden ser leídas por Javascript. Si bien el navegador puede tener en cuenta la ruta cuando Javascript intenta leer cookies, esta no es una función de seguridad: la ruta no es un límite de seguridad, por lo que Javascript malicioso en una página aún puede leer cookies para otras rutas (por ejemplo, abriendo un iframe invisible con la ruta correcta, inyectando Javascript malicioso en ella), y entonces agarrando la galleta). El único límite de seguridad efectivo está en la granularidad de un origen. Como resultado, el resultado final desde una perspectiva de seguridad es: Javascript malicioso en www.example.com/dogs puede leer una cookie cuya ruta es www.example.com/cats .

En la práctica, los desarrolladores generalmente evitan estos casos de esquina que quedan de días anteriores, o al menos evitan confiar en ellos para brindar seguridad adicional. Por ejemplo, los desarrolladores web no deben confiar en la ruta de las cookies para proporcionar seguridad (en el mejor de los casos, reduce la cantidad de cookies que se devuelven, lo que quizás podría usarse para reducir el ancho de banda en algunas situaciones). Como otro ejemplo, los sitios en estos días generalmente evitan servir contenido de números de puerto no estándar, ya que esa situación es otro caso de esquina que expone una semántica inesperada.

En este punto, la ruta de las cookies es principalmente un vestigio residual de días anteriores. Por lo que puedo decir, ya no sirve para nada, y si la ruta de acceso a las cookies nunca se hubiera introducido, hoy probablemente nunca lo notaría. Pero los navegadores todavía tienen que admitirlo, por razones de compatibilidad con versiones anteriores. Y así va, en la web. Es mejor pensar en la web no como un artefacto cuidadosamente diseñado, sino como algo que evolucionó con el tiempo, y como resultado, se ha acumulado basura ahora inútil, como nuestro apéndice.

    
respondido por el D.W. 05.03.2012 - 21:07
fuente

Lea otras preguntas en las etiquetas