it-swarm-es.com

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

Firesheep ha puesto en primer plano el tema de los intercambios de cookies inseguros.

¿Cómo puede asegurarse de que todos los intercambios de cookies se vean obligados a ocurrir solo a través de una conexión SSL segura al servidor cuando se está comunicando 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 ejecutando IIS 7.5 si eso reduce un poco el alcance.

23
cpuguru

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

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

así que realmente quieres, como mínimo

<httpCookies requireSSL='true'/>

Pero preferiblemente también activará httpOnlyCookies, a menos que esté haciendo un javascript realmente enganchado.

21
blowdart

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

  • Mover a la protección SSL de todo el sitio : mueva todo su sitio a HTTPS y desactive todo acceso HTTP. En otras palabras, proteja todo su sitio con SSL. Aquí hay más recursos para hacerlo: cómo protegerse contra Firesheep , pros y contras de SSL en todo el sitio , por qué SSL protege contra Firesheep .

  • Establezca el indicador SEGURO en todas las cookies : cada vez que el servidor establezca una cookie, haga los arreglos para que establezca el indicador SEGURO en la cookie. El indicador SECURE le dice al navegador del usuario que solo envíe esta cookie a través de conexiones seguras 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 este indicador 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 de 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 HTTPS; de lo contrario, está exponiendo la seguridad de su sitio a ataques activos. (Consulte también Jeremiah Grossman FAQ en widgets de terceros .) Para evitar inundar a sus usuarios con advertencias de contenido mixto , queremos asegurarnos de que todo el contenido, incluidas las imágenes y bibliotecas de terceros, se entregue también a través de HTTPS.

Algunos podrían argumentar que lo anterior es exagerado. En algunos casos, es posible protegerse contra Firesheep utilizando SSL en solo 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 IIS, así que no puedo darle una receta definitiva sobre cómo implementar estos pasos en IIS. Sin embargo, esta referencia en habilitar SSL en IIS puede ser útil para usted. Parece que puede hacer clic derecho en la raíz del sitio, elija Properties , haga clic en la pestaña Directory Security, luego en Secure Communications, haga clic en Edit y active 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): redirigiendo a HTTPS , tres métodos para redirigir a HTTPS . Si migra un sitio existente, también deberá cambiar todos los enlaces y referencias a su sitio desde http: URL a https: URL. No estoy seguro de cómo configurar ASP.NET para configurar 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 HTTP habilitado o si tiene algún tipo de redireccionamiento de páginas HTTP a páginas HTTPS. Finalmente, hay mucho material publicado en ajuste de rendimiento para HTTPS .

18
D.W.

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

https://stackoverflow.com/questions/399982/why-are-cookie-paths-case-sensitive

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 dará la ruta correcta url.com/virtualdirectory/default.aspx response.redirect ("~/default.aspx");

1
MichaelChan