¡Recientemente samesite = lax agrega automáticamente a mi cookie de sesión! este atributo solo se agrega a sessionID:
"Set-Cookie ASP.NET_SessionId=zana3mklplqwewhwvika2125; path=/; HttpOnly; **SameSite=Lax**"
Mi sitio web está alojado en IIS 8.5, Windows 2012 R2 y no tiene WAF o UrlRewrite y apago AntiVirus (kasper).
pero aún tiene el mismo problema en algunos servidores de clientes.
¿alguna idea?
EDITADO: Encuentro esto: https://support.microsoft.com/en-us/help/4524419/kb4524419
ASP.NET ahora emitirá un encabezado de cookie SameSite cuando el valor HttpCookie.SameSite sea 'None' para acomodar los próximos cambios en el manejo de cookies SameSite en Chrome. Como parte de este cambio, las cookies FormsAuth y SessionState también se emitirán con SameSite = 'Lax' en lugar del valor predeterminado anterior de 'None', aunque estos valores se pueden anular en web.config.
¿Cómo puedo anular las cookies de samesite para SessionState en web.config? Agrego esta línea, pero no funciona en la cookie SessionID.
<httpCookies sameSite="Unspecified" />
EDITADO: Encuentro esto: https://docs.microsoft.com/en-us/dotnet/api/system.web.configuration.sessionstatesection.cookiesamesite?view=netframework-4.8#System_Web_Configuration_SessionStateSection_CookieSameSite
Establezca samesite para stateerver mediante el atributo "cookieSameSite" de la etiqueta SessionState.
Respuestas:
Agregue estas opciones a web.config para sameSite = None, Lax o Strict
fuente
<httpCookies sameSite
no se muestra como una opción válida en .Net Framework 4.8No puedo usar rewrite, porque UrlRewrite no está instalado en todos los servidores de mis clientes.
Finalmente agrego cookieSameSite a mi web.config:
fuente
cookieSameSite
funcionalidad a web.config - .NET 4.7.2 sí. El enlace que publiqué en mi comentario también está vinculado desde la página a la que se refiere.El atributo CookieSameSite no está disponible para muchos marcos antiguos. Si se encuentra en una situación en la que la respuesta aceptada no es compatible con su entorno, ¡siga leyendo!
Modifiqué varias respuestas SO para obtener esta reescritura de URL que se agrega
SameSite=None
a las cookies de sesión y también se eliminaSameSite=None
de todas las cookies para la mayoría de los navegadores incompatibles. El objetivo de esta reescritura es preservar el comportamiento "heredado" anterior a Chrome 80.Escritura completa en mi blog de primera línea del codificador :
Esto debería funcionar para la mayoría de las aplicaciones ASP .Net y ASP .Net Core, aunque los Frameworks más nuevos tienen el código y las opciones de configuración adecuados para permitirle controlar este comportamiento. Recomiendo investigar todas las opciones disponibles antes de usar mi reescritura anterior.
fuente
<system.net></system.net>
?<system.webServer>
SameSite=Lax
esto, solo se agregaráSameSite=None
y no se reemplazará.(SameSite=.*)?
el patrón en absoluto?SameSite=Lax
encabezado:((.*)(ASP.NET_SessionId)(=.*))(?=SameSite)
consulte regex101.com/r/7D9UdO/3 actualizado ; sin embargo, tenga en cuenta que esta expresión regular excluirá cualquier cosa que desee después, como el encabezado seguro. Esta debería ser una condición rara, por lo que el punto clave es ver qué está emitiendo su aplicación OS + framework + y escribir la expresión regular para adaptarse. Actualizaré mi respuesta para reflejar ambas formas :)Última actualización: la respuesta de zemien es más completa y completa que la mía. porque establece cookies basadas en el agente de usuario.
Mi respuesta:
Puede reemplazar SameSite = Lax con SameSite = None para ASP.NET_SessionId en web.config de la siguiente manera:
Actualización: para evitar el problema de iOS , reemplace
con
fuente
@zemien su solución resolvió correctamente nuestros problemas de Google Chrome
Tenemos una integración donde nuestra aplicación está incrustada en un iframe en un tercero. La versión 80 de Chrome lanzada el 4 de febrero de 2020 evitó que se cargaran las cookies.
Sin embargo, tuve que modificar el patrón para capturar todas las cookies, agregar el indicador de seguridad y la condición para no aplicar la reescritura en localhost para nuestro entorno local no https
fuente
Funciona para mi. Agregado a mi archivo web.config:
Actualice a .Net Framework 4.8 + parche de instalación: actualización acumulativa 2019-12 para .NET Framework 3.5 y 4.8 para Windows 10 versión 1909 para x64 (KB4533002)
fuente