¿Cómo puedo configurar el indicador de seguridad en una cookie de sesión ASP.NET, para que solo se transmita a través de HTTPS y nunca a través de HTTP simple?
146
¿Cómo puedo configurar el indicador de seguridad en una cookie de sesión ASP.NET, para que solo se transmita a través de HTTPS y nunca a través de HTTP simple?
Hay dos formas, un httpCookies
elemento en le web.config
permite activar requireSSL
que solo transmite todas las cookies, incluida la sesión solo en SSL y también dentro de la autenticación de formularios, pero si activa SSL en httpcookies, también debe activarlo dentro de la configuración de formularios.
Editar para mayor claridad:
poner esto en<system.web>
<httpCookies requireSSL="true" />
<httpCookies requireSSL="true" />
En el
<system.web>
elemento, agregue el siguiente elemento:Sin embargo, si tiene un
<forms>
elemento en susystem.web\authentication
bloque, esto anulará la configuración y la restablecerá al valorhttpCookies
predeterminadofalse
.En ese caso, también debe agregar el
requireSSL="true"
atributo al elemento de formularios.Entonces terminarás con:
Consulte aquí y aquí la documentación de MSDN de estos elementos.
fuente
roleManager
elemento, su atributocookieRequireSSL="true"
también debe establecerse en verdadero. Árbitro. msdn.microsoft.com/en-us/library/…Las cosas se complican rápidamente si habla de código registrado en un entorno empresarial. Hemos encontrado que el mejor enfoque es tener la web. Release.config contiene lo siguiente:
De esa manera, los desarrolladores no se ven afectados (se ejecutan en Debug), y solo los servidores que obtienen versiones de lanzamiento requieren que las cookies sean SSL.
fuente
seguro: este atributo le dice al navegador que solo envíe la cookie si la solicitud se envía a través de un canal seguro como HTTPS. Esto ayudará a proteger la cookie de pasar sobre solicitudes no encriptadas. Si se puede acceder a la aplicación a través de HTTP y HTTPS, existe la posibilidad de que la cookie se pueda enviar en texto sin cifrar.
fuente
Sobre la base de la respuesta de @Mark D, usaría las transformaciones web.config para configurar todas las cookies a Secure. Esto incluye la configuración
anonymousIdentification cookieRequireSSL
yhttpCookies requireSSL
.Con ese fin, configuraría su web.Release.config como:
Si está utilizando la autenticación de roles y formularios con
ASP.NET Membership Provider
(lo sé, es antiguo) también querrá establecerroleManager cookieRequireSSL
losforms requireSSL
atributos y los como seguros también. Si es así, su web.release.config podría verse así (incluido anteriormente más nuevas etiquetas para la API de membresía):Los antecedentes de web.config se transforman aquí: http://go.microsoft.com/fwlink/?LinkId=125889
Obviamente, esto va más allá de la pregunta original del OP, pero si no los configura a todos como seguros, puede esperar que una herramienta de escaneo de seguridad se dé cuenta y verá banderas rojas en el informe. Pregúntame cómo lo sé. :)
fuente