如何在 asp.net 核心中为 cookie 添加前缀?
How to add prefix to cookie in asp.net core?
我在 SecurityHeaders.com 上进行了 运行 扫描,结果显示一条警告,指出 cookie 没有前缀,我不知道如何为 cookie 添加前缀。谁能告诉我如何在 asp.net 核心中做到这一点?。 Screenshot of website scan result
这是来自 Startup.cs class
的 ConfigureServices 方法
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
options.Secure = CookieSecurePolicy.Always;
});
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddAzureAdB2C(options => Configuration.Bind("AzureAdB2C", options))
.AddCookie();
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDistributedMemoryCache();
services.AddSession();
}
这里是配置方法
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseExceptionHandler("/Error");
app.UseHsts();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseSession();
app.UseMvc(routes =>
{
routes.MapRoute("home", "{action=Index}",
defaults: new { controller = "Home" });
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
我找到了答案。因此,如果有人需要,请将其张贴在这里。
在 Session 选项中,将 Cookie.Name 设置为前缀+名称。
__Secure- 下方是 Session Cookie 名称中的前缀。
services.AddSession(options =>
{
options.Cookie.Name = "__Secure-.AspNetCore.Session";
//options.IdleTimeout = TimeSpan.FromSeconds(600);
//options.Cookie.IsEssential = true;
});
是的,它也解决了扫描中的安全 header 问题。
我在 SecurityHeaders.com 上进行了 运行 扫描,结果显示一条警告,指出 cookie 没有前缀,我不知道如何为 cookie 添加前缀。谁能告诉我如何在 asp.net 核心中做到这一点?。 Screenshot of website scan result
这是来自 Startup.cs class
的 ConfigureServices 方法public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
options.Secure = CookieSecurePolicy.Always;
});
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddAzureAdB2C(options => Configuration.Bind("AzureAdB2C", options))
.AddCookie();
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddDistributedMemoryCache();
services.AddSession();
}
这里是配置方法
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseExceptionHandler("/Error");
app.UseHsts();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseSession();
app.UseMvc(routes =>
{
routes.MapRoute("home", "{action=Index}",
defaults: new { controller = "Home" });
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
我找到了答案。因此,如果有人需要,请将其张贴在这里。 在 Session 选项中,将 Cookie.Name 设置为前缀+名称。
__Secure- 下方是 Session Cookie 名称中的前缀。
services.AddSession(options =>
{
options.Cookie.Name = "__Secure-.AspNetCore.Session";
//options.IdleTimeout = TimeSpan.FromSeconds(600);
//options.Cookie.IsEssential = true;
});
是的,它也解决了扫描中的安全 header 问题。