如何在ASP.net MVC中使AntiforgeryToken成为安全的

时间:2017-12-13 16:29:00

标签: c# asp.net asp.net-mvc asp.net-mvc-4

最近我要求制作由ASP.net MVC创建的Antiforgerytoken以使其安全

基本上反伪造令牌是浏览器中名为_RequestVerificationToken的cookie,想要使其成为安全

我已经尝试过了

<compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" />
    <authentication mode="Windows" />
    <identity impersonate="false" />
    <pages controlRenderingCompatibilityVersion="4.0" />
<httpCookies requireSSL="true" httpOnlyCookies="true"/>

但它没有使令牌成为安全和httpOnly

如果有人可以提供帮助,请

使整个网站也在Https上托管

2 个答案:

答案 0 :(得分:0)

防伪令牌可用于帮助保护您的应用程序免受跨站点请求伪造。要使用此功能,您需要做的就是将以下HTML帮助器添加到表单中,以便将其作为表单发布的一部分提交。

它用于生成您的表单而不是整个mvc应用程序。

例如,如果您想保护表单。

查看:

@using(Html.BeginForm())
{
      @Html.AntiForgeryToken()
      @Html.TextBox("Name")
      <input type="submit" value="Submit"/>
}

控制器:

[HttpPost] 
[ValidateAntiForgeryToken()] 
public ActionResult PostMethod(FormCollection collection) 
{
   //Logic
}

答案 1 :(得分:0)

当您遇到由安全经理破坏的印章时,该安全经理有一份供应商报告说此cookie不安全,请尝试将其添加到Startup.cs ConfigureServices

services.AddAntiforgery(options =>
{
    options.FormFieldName = "AntiforgeryFieldname";
    options.HeaderName = "X-CSRF-TOKEN-HEADERNAME";
    options.SuppressXFrameOptionsHeader = false;
    options.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always;
});

Chrome screenshot 参考 https://docs.microsoft.com/en-us/aspnet/core/security/anti-request-forgery?view=aspnetcore-3.1https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.http.cookiesecurepolicy?view=aspnetcore-3.1