CookieAuthentication中间件提供的cookie安全吗?
Is cookie provided by CookieAuthentication middleware secure?
我正在使用 app.UseCookieAuthentication
如下(只是一个简单的例子);
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "MyAuthScheme",
AutomaticAuthenticate = true,
});
然后我在某处手动创建 ClaimsPrincipal
并登录用户:
var claimCollection = new List<Claim>()
{
new Claim(ClaimTypes.Name, "First user"),
new Claim(ClaimTypes.Role, "User"),
new Claim(ClaimTypes.Email, "first@user.com")
};
var claimsIdentity = new ClaimsIdentity(claimCollection);
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
await context.Authentication.SignInAsync("MyAuthScheme", claimsPrincipal);
因此生成的 cookie 将包含有关用户角色的信息。
现在的问题是:这样生成的cookie安全吗?我的意思是 ASP.NET 是否以某种方式对其进行加密,以便最终用户无法以某种方式手动修改它,例如服务器会认为用户是管理员?
当用户修改cookie时,服务器会注意到cookie已损坏吗?
是的。
是的,它是加密的,所以您看不到内容。
是的,它已签名,因此会检测到篡改。
我正在使用 app.UseCookieAuthentication
如下(只是一个简单的例子);
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationScheme = "MyAuthScheme",
AutomaticAuthenticate = true,
});
然后我在某处手动创建 ClaimsPrincipal
并登录用户:
var claimCollection = new List<Claim>()
{
new Claim(ClaimTypes.Name, "First user"),
new Claim(ClaimTypes.Role, "User"),
new Claim(ClaimTypes.Email, "first@user.com")
};
var claimsIdentity = new ClaimsIdentity(claimCollection);
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
await context.Authentication.SignInAsync("MyAuthScheme", claimsPrincipal);
因此生成的 cookie 将包含有关用户角色的信息。
现在的问题是:这样生成的cookie安全吗?我的意思是 ASP.NET 是否以某种方式对其进行加密,以便最终用户无法以某种方式手动修改它,例如服务器会认为用户是管理员? 当用户修改cookie时,服务器会注意到cookie已损坏吗?
是的。
是的,它是加密的,所以您看不到内容。
是的,它已签名,因此会检测到篡改。