Respuestas:
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" />
En el <system.web>
elemento, agregue el siguiente elemento:
<httpCookies requireSSL="true" />
Sin embargo, si tiene un <forms>
elemento en su system.web\authentication
bloque, esto anulará la configuración y la restablecerá al valor httpCookies
predeterminado false
.
En ese caso, también debe agregar el requireSSL="true"
atributo al elemento de formularios.
Entonces terminarás con:
<system.web>
<authentication mode="Forms">
<forms requireSSL="true">
<!-- forms content -->
</forms>
</authentication>
</system.web>
Consulte aquí y aquí la documentación de MSDN de estos elementos.
roleManager
elemento, su atributo cookieRequireSSL="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:
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
<authentication>
<forms xdt:Transform="Replace" timeout="20" requireSSL="true" />
</authentication>
</system.web>
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.
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.
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
y httpCookies requireSSL
.
Con ese fin, configuraría su web.Release.config como:
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
</system.web>
</configuration>
Si está utilizando la autenticación de roles y formularios con ASP.NET Membership Provider
(lo sé, es antiguo) también querrá establecer roleManager cookieRequireSSL
los forms 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):
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<httpCookies xdt:Transform="SetAttributes(httpOnlyCookies)" httpOnlyCookies="true" />
<httpCookies xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
<anonymousIdentification xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<roleManager xdt:Transform="SetAttributes(cookieRequireSSL)" cookieRequireSSL="true" />
<authentication>
<forms xdt:Transform="SetAttributes(requireSSL)" requireSSL="true" />
</authentication>
</system.web>
</configuration>
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é. :)
<httpCookies requireSSL="true" />