¿Cómo garantizar que las cookies siempre se envíen a través de SSL cuando se utiliza ASP.NET en IIS 7.5?

23

Firesheep ha llevado el tema de los intercambios de cookies inseguros a la vanguardia.

¿Cómo puede asegurarse de que todos los intercambios de cookies se obliguen a ocurrir solo a través de una conexión con SSL al servidor cuando se comunica con un usuario web?

Nuestro escenario es que la aplicación web está escrita en ASP.NET 4.0 y alojada en Windows Server 2008 R2 con IIS 7.5 si eso reduce el alcance.

    
pregunta cpuguru 08.01.2011 - 23:24
fuente

3 respuestas

21

Puede usar app.config para forzarlo ; el formato es (en la sección <system.web> )

<httpCookies domain="String"
             httpOnlyCookies="true|false" 
             requireSSL="true|false" />

para que realmente quieras, como mínimo

<httpCookies requireSSL='true'/>

Pero es preferible que también actives httpOnlyCookies, a menos que estés haciendo algunos javascript realmente enganchados.

    
respondido por el blowdart 11.01.2011 - 00:34
fuente
19

La forma más segura de proteger su sitio contra Firesheep (y ataques relacionados):

  • Mover a la protección SSL en todo el sitio : Mueva todo el sitio a HTTPS y deshabilite todos los accesos HTTP. En otras palabras, proteja todo su sitio con SSL. Aquí hay algunos recursos más para hacer eso: cómo protegerse contra Firesheep , ventajas y desventajas de SSL en todo el sitio , por qué SSL protege contra Firesheep .

  • Establezca la marca SEGURA en todas las cookies : cada vez que el servidor establezca una cookie, organice la marca SEGURA en la cookie. El indicador SEGURO le dice al navegador del usuario que solo envíe esta cookie a través de conexiones seguras con SSL (HTTPS); el navegador nunca enviará una cookie SEGURA a través de una conexión no cifrada (HTTP). El paso más simple es establecer esta bandera en cada cookie que usa su sitio.

Además, recomiendo algunos pasos adicionales:

  • Tenga cuidado con el contenido de terceros : los widgets, bibliotecas y contenido de terceros pueden ser un riesgo para la seguridad. Si incluye Javascript de terceros (por ejemplo, a través de <SCRIPT SRC=...> ), le recomiendo que se asegure de que hagan referencia a las URL de HTTPS; de lo contrario, está exponiendo la seguridad de su sitio a ataques activos. (Vea también Preguntas frecuentes de Jeremiah Grossman sobre widgets de terceros . ) Para evitar inundar a sus usuarios con advertencias de contenido mixto , querrá asegurarse de que todo el contenido, incluidas las imágenes y bibliotecas de terceros, también se entregue a través de HTTPS.

Algunos podrían argumentar que lo anterior es una exageración. En algunos casos, es posible proteger contra Firesheep utilizando SSL solo en una parte del sitio. Sin embargo, hacerlo requiere cuidado y conocimiento detallado, y es más difícil hacerlo bien. Dado que tiene que hacer la pregunta aquí, personalmente le recomiendo que comience con SSL en todo el sitio; tienes una mejor oportunidad de hacerlo bien.

Cómo implementar esto en IIS : no soy un experto en IIS, por lo que no puedo darte una receta definitiva sobre cómo implementar estos pasos en IIS. Sin embargo, esta referencia en habilitación de SSL en IIS puede ser útil para usted. Parece que puede hacer clic con el botón derecho en la raíz del sitio, elegir Properties , hacer clic en la pestaña Directory Security , luego en Secure Communications , hacer clic en Edit y habilitar Require Secure Channel (SSL) . No sé cómo configurar IIS para establecer el indicador SEGURO automáticamente en todas las cookies. Para migrar un sitio existente, le recomiendo que configure una redirección para que cualquier persona que visite una página HTTP sea redirigida a HTTPS. Las siguientes referencias pueden ayudar con eso (sin probar): redireccionando a HTTPS , tres métodos para redirigir a HTTPS . Si está migrando un sitio existente, también deberá cambiar todos los enlaces y referencias a su sitio de las URL de http: a las URL de https: . No estoy seguro de cómo configurar ASP.NET para establecer el indicador SEGURO en todas las cookies, pero creo que puede agregar cookieRequireSSL="true" o <httpCookies requireSSL="true"> a su Web.config ; es importante hacerlo, y especialmente importante si tiene habilitado HTTP o si tiene algún tipo de redireccionamiento de las páginas HTTP a las páginas HTTPS. Finalmente, hay una gran cantidad de material publicado en ajuste de rendimiento para HTTPS .

    
respondido por el D.W. 09.01.2011 - 02:56
fuente
1

Me encontré con este hilo mientras resolvía emitir problemas. La resolución que tuve es que las rutas de las cookies distinguen entre mayúsculas y minúsculas. Aquí está la pregunta relacionada.

enlace

Mi resolución fue redirigir desde la página de destino a la ruta correcta. Asegúrese de buscar posibles bucles de redireccionamiento.

url.com/VirtualDirectory/default.aspx - >

// que ahora le dará la ruta correcta url.com/virtualdirectory/default.aspx response.redirect ("~ / default.aspx");

    
respondido por el MichaelChan 04.06.2015 - 07:13
fuente

Lea otras preguntas en las etiquetas