Jon*_*nas 6 asp.net cookies asp.net-mvc asp.net-core-mvc asp.net-core
我正在考虑在ASP.NET Core中更改默认防伪cookie的名称.
我想更改cookie名称的原因是为了匿名化cookie,在我看来,没有理由为什么最终用户应该能够确定这个cookie的责任.
Microsoft.AspNetCore.Antiforgery.AntiforgeryOptions.CookieName
Dan*_*.G. 16
您可以在以下位置设置其他名称Startup.ConfigureServices:
services.AddAntiforgery(opts => opts.CookieName = "MyAntiforgeryCookie");
Run Code Online (Sandbox Code Playgroud)
参考:https: //docs.microsoft.com/en-us/dotnet/api/Microsoft.AspNetCore.Antiforgery.AntiforgeryOptions?view=aspnetcore-2.0
对于以下用途:
services.AddAntiforgery(opts => opts.Cookie.Name = "MyAntiforgeryCookie");
Run Code Online (Sandbox Code Playgroud)
默认情况下,AddMvc()内部调用AddAntiforgery(),这意味着您将获得默认的cookie,标题和表单名称.如果您需要/想要使用不同的名称,可以通过手动调用上面的AddAntiforgery来实现.
如果您更改cookie名称,应该不会对您的应用程序产生任何影响(除非您自己添加了手动使用该cookie的代码).您可能还想更改标题/表单名称,例如,官方的Antiforgery repo 有一个使用Angular 的示例,并将标题更改为标准的角度XSRF标记标题.
要使用它,请添加[ValidateAntiForgeryToken]除GET请求之外的控制器操作.
只要您使用asp表单标记帮助程序,就必须对标准html表单执行任何其他操作,请参阅此问题.
如果您使用ajax请求,则需要在请求中包含包含生成的令牌的标头或字段.你基本上需要:
IAntiforgeryvar tokenSet = antiforgery.GetAndStoreTokens(httpContext);使其可用于您的js代码,以便它知道tokenSet.RequestToken要包含在具有名称的字段tokenSet.FormFieldName或tokenSet.HeaderName每个ajax请求中具有名称的标头的值.
目的是POST/PUT/DELETE/PATCH请求包括两件事:
因此,防伪中间件可以验证没有XSRF.
有关cookie名称/域的更新
合理的默认值是每个应用程序都有自己的cookie.您通常使用默认方法获得该值,因为cookie上没有专门设置域,因此cookie从请求中获取域.这将意味着不同的应用程序使用不同的cookie,除非应用程序托管在同一个域中.
您可能只想在特殊情况下共享cookie,例如,如果您有2个应用程序,其中应用程序A中的表单发布到应用程序B.在这些情况下,请确保使用与两个应用程序匹配的域/子域,并且两者都使用相同的cookiea名称.
| 归档时间: |
|
| 查看次数: |
5612 次 |
| 最近记录: |