Cambios en el lado del cliente si establecemos HttpCookie.HttpOnly como true.
En .net Core, utilizamos la característica de configuración de protección contra falsificación con IAntiforgery junto con [ValidateAntiForgeryToken] o AutoValidateAntiforgeryToken para prevenir ataques de falsificación de solicitudes entre sitios (XSRF/CSRF).
Para configurar la característica de protección contra falsificación en el middleware, utilizamos:
var antiforgery = app.Services.GetRequiredService<IAntiforgery>();
app.Use((context, next) =>
{
var requestPath = context.Request.Path.Value;
if (string.Equals(requestPath, "/", StringComparison.OrdinalIgnoreCase)
|| string.Equals(requestPath, "/index.html", StringComparison.OrdinalIgnoreCase))
{
var tokenSet = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokenSet.RequestToken!,
new CookieOptions { HttpOnly = false });
}
return next(context);
});
Enlace a la documentación de Microsoft
Ahora mi pregunta es, si establecemos new CookieOptions { HttpOnly = true });
, ¿qué cambios debemos hacer en el lado del servidor y en el lado del cliente?
davy.ai
Si configuramos
new CookieOptions { HttpOnly = True });
, entonces en el lado del servidor no es necesario realizar ningún cambio adicional. Sin embargo, en el lado del cliente, debemos asegurarnos de no intentar acceder a cookies con el atributo “HttpOnly” a través de JavaScript.Las cookies con el atributo “HttpOnly” están destinadas a ser accesibles solo por el código del lado del servidor y no pueden ser accedidas por el código del lado del cliente (como JavaScript) por razones de seguridad. Si intentamos acceder a las cookies “HttpOnly” a través de código del lado del cliente, el navegador bloqueará la solicitud y no podremos acceder a las cookies.
Por lo tanto, si establecemos
HttpOnly = True
, debemos asegurarnos de no acceder a las cookies “HttpOnly” a través de JavaScript. Aún podemos acceder al valor de la cookie en el código del lado del servidor si es necesario.