我在网上冲浪,发现了第Preventing CSRF with the same-site cookie attribute条.

作为链接维护,我们需要添加设置Cookie头.

Set-Cookie:Key=Value;HttpOnly;SameSite=Strict

现在我的问题是,我想在我的ASP.NET站点的"所有Cookie"和"身份验证Cookie"中设置它. 我试图使用来自IIS的头来设置它,但是有人说这是错误的实现方式.

我也试过下面的方法.

HttpCookie newAuthenticationCookie = new HttpCookie(FormsAuthentication.FormsCookieName
                    , FormsAuthentication.Encrypt(newAuthenticationTicket))
                {
                    HttpOnly = true
                };
newAuthenticationCookie.Values.Add("SameSite", "strict");

但这似乎帮不了我.

请给我一个更好的方法.

谢谢

推荐答案

在深入查看HttpCookie Source之后,确认我们不能对代码执行此操作,因为没有办法在Cookie上添加额外的属性,并且类被标记为密封的.

但不管怎样,我还是通过修改web.config来管理解决方案,如下所示.

<rewrite>
  <outboundRules>
    <rule name="Add SameSite" preCondition="No SameSite">
      <match serverVariable="RESPONSE_Set_Cookie" pattern=".*" negate="false" />
      <action type="Rewrite" value="{R:0}; SameSite=strict" />
      <conditions>
      </conditions>
    </rule>
    <preConditions>
      <preCondition name="No SameSite">
        <add input="{RESPONSE_Set_Cookie}" pattern="." />
        <add input="{RESPONSE_Set_Cookie}" pattern="; SameSite=strict" negate="true" />
      </preCondition>
    </preConditions>
  </outboundRules>
</rewrite>

这将在每个Set-Cookie上加上SameSite=strict.

Asp.net相关问答推荐

如何格式化搜索字符串以从 Razor 页表中的多个列返回部分搜索字符串?

解析 JSON 响应的最简单方法

为什么默认情况下不允许 GET 请求返回 JSON?

asp.net mvc 中的 RedirectToAction 用法

HttpWebRequest 未通过凭据

使用 Lucene.NET 索引 .PDF、.XLS、.DOC、.PPT

如何在同一解决方案中从 MVC 项目调试 Web API 项目

以编程方式添加跨度标签,而不是标签控件?

会话变量保存在哪里?

将数据表导出到 Excel 文件

应该如何使用 RedirectToRoute?

WebForm_PostBackOptions 文档

SignalR /signalr/hubs 404 未找到

Web API 必填参数

ASP.NET MVC 4 的 Windows 身份验证 - 它是如何工作的,如何测试它

如何遍历自定义 vb.net 对象的每个属性?

当文件上传超出 ASP.NET MVC 中允许的大小时显示自定义错误页面

ASP.NET Excel 导出编码问题

ASP.NET MVC 5 Web.config:FormsAuthenticationModule或FormsAuthentication

如何创建代表 colored颜色 的随机十六进制字符串?