首页 > 解决方案 > 如何使用 C# ASP.Net Core 3.1 在服务器端检查 cookie 选项

问题描述

我正在使用以下选项创建一个 cookie:

var cookieOptions = new CookieOptions
{
    HttpOnly = true,
    SameSite = SameSiteMode.Strict,
    Secure = true
};
Response.Cookies.Append("myCookie", customerToken, cookieOptions);

当我从浏览器取回 cookie 时,我很想验证它仍然是使用 httponly、samesite 和安全创建的,然后才接受它。或者这只是愚蠢的,所有这些都可以在浏览器中伪造吗?

标签: c#asp.net-corecookies

解决方案


正如您提到的验证,上面应该是授权的一部分。您可以通过使用基于策略的授权来做到这一点,您可以在执行任何操作之前定义策略的条款和条件。

如何指导:https ://docs.microsoft.com/en-us/aspnet/core/security/authorization/policies?view=aspnetcore-3.1#apply-policies-to-mvc-controllers

首先,您从请求中读取 cookie 数据。并且可以使用属性授权,例如:[Authorize(Policy = "your policy name ")]在端点/控制器级别

之后实现处理程序,例如:Auth Handler ,您可以在其中定义上述条件。如果令牌/cookie 不符合您在处理程序中的条件,它将无法授权。


推荐阅读