ASP.NET Core Cookie SameSite

在较多的项目中,Cookie 是比较常用的一种状态保持的选择。比如常见的例子:用户登录成功后,服务器通过 set-cookie 将会话Id设置到当前域下,前端在调用后端接口时,会自动将同域下的 Cookie 携带上,然后后端接口再获取到会话Id进行用户登录状态的合法性验证。

了解过 Cookie 相关知识的同学都比较清楚,Cookie 的使用上一不小心就会出现安全性问题,如:CSRF(Cross-site request forgery 跨站请求伪造)、XSSI(Cross Site Script Inclusion 跨站脚本包含)攻击,网上也有很多这一类的介绍文章。为了降低这类风险,谷歌开发了一种称为 Cookie  SameSite 安全机制,并已经在主流的浏览器中被应用较长时间。

什么是 Cookie  SameSite

SameSite 是 Cookie 中的一个属性,它是用来约束第三方(跨域) Cookie 传递的,SameSite 有 StrictLaxNone 三个值可设置。

Strict

Strict 是最严格的策略,在 Strict 下,浏览器不允许将 Cookie 从 A 域发送到B域。假设用户之前在 B 域下已经是登录状态,A 域某页面上有一个 B 域的跳转链接,当通过点击 A 域下这个跳转链接进入 B 域时,B 域下会出现未登录的情况。这种策略的安全性很高,但其实在用户体验上并不好,所以使用上并不常见。

set-cookie: sid=0920770230c103809305605a;samesite=strict

Lax

Lax 策略相比 Strict 会宽一些,大多数情况也是不发送第三方 Cookie,但 链接(<a href="..."></a>)预加载请求 <link rel="prerender" href="..."/>GET 表单 <form method="GET" action="..."> 除外。假设用户之前在 B 域下已经是登录状态,A 域某页面上有一个 B 域的链接,当通过点击 A 域下这个跳转链接进入 B 域时,B 域下将依然显示登录状态。但如果在 A 域下发起了一个 Ajax POST 请求到 B 域的接口,这时接口是获取不到相关 Cookie 的。虽然  Lax 策略依然会存在一定的风险,但通常来说是相对合适的选择,所以 Lax 在一些开发语言中被设置为 Cookie SameSite 的默认值。

set-cookie: sid=0920770230c103809305605a;samesite=lax

None

在实际使用中,也会存在有一些场景确实是需要支持跨域 Cookie 传递(如比较常见的 A 域中 IFrame 嵌入 B 域链接进行使用),这时候可以选择将 SameSite 设置为 None,但是使用 None 却是有前提条件的,它要求必须同时设置 Secure 属性为 true,而 Secure 设置 true 又要求 B 域是基于 HTTPS 协议来访问的,否则依然无效。

set-cookie: sid=0920770230c103809305605a; secure; samesite=none

在 .NET Core 中的使用

下面将以 ASP.NET Core Web 应用程序为例

var options = new CookieOptions
{Expires = DateTime.Now.AddHours(1),
};
_httpContextAccessor.HttpContext.Response.Cookies.Append("sid", "0920770230c103809305605a", options);

常规情况下,以上代码即可完成 Cookie 的写入,CookieOptions 还支持一些其他的配置,可根据实际情况设定。不过需要注意的是在 .NET Core 2.2 和 .NET Core 3.1 中,Cookie 的 SameSite 属性默认值是不也一样的,升级需要注意。

2.2 中的默认值是 SameSiteMode.Lax

3.1 中的默认值变成了 SameSiteMode.Unspecified(表示不写入 SameSite 属性值,继承浏览器默认的 Cookie 策略)

IFrame 中如何解决 SameSite 问题

在基于 ASP.NET Core set-cookie 的情况下,如果需要当前域被其他域的 IFrame 引入使用,最基本的要求是站点必须基于 HTTPS 协议,然后修改代码将 SameSite 属性值设置为 None,Secure 设置为 true。

var options = new CookieOptions
{SameSite = SameSiteMode.None,Secure = true
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

还不会ts?一文带你打开ts的大门

一文带你打开ts的大门序言一、什么是TypeScript&#xff1f;1、编程语言的类型2、TypeScript究竟是什么&#xff1f;二、为什么要学习TypeScript&#xff1f;1、程序更容易理解2、效率更高3、更少的错误4、非常好的包容性5、一点小缺点三、typescript入门1、如何安装TypeScript…

idea中右侧的Maven框消失了

我掉 芭比Q了 idea中右侧的maven框居然没了 消失不见了 跟一束烟似的 没了 解决&#xff08;网上找的&#xff09;

「软件项目管理」一文详解软件项目进度计划

软件项目进度计划序言一、进度及任务的定义1. 进度2. 任务3. 产品和任务的关系二、任务关联关系1. 定义2. 任务(活动)之间的关系3. 任务关系矩阵4. 任务关联关系的依据三、进度管理图示1. 甘特图2. 网络图&#xff08;1&#xff09;定义&#xff08;2&#xff09;常用的网络图Ⅰ…

过年烟花特效

一&#xff1a;前言 过年了 菜鸡杰 在这给CSDN的伙计们拜年了 这一段时间以来 我特别感谢 我的粉丝 正是因为有你们的陪伴 所以我才会很大动力 去写博客&#xff0c;所以我就准备了一个特效给粉丝们 现在过年不让放烟花 我就改了个代码 改成烟花特效 送给大家 二:特效描述 这…

「软件项目管理」一文详解软件项目质量计划

一文详解软件项目质量计划&#x1f3a9;前言&#x1f452;一、质量概述1. 质量与软件质量2. 质量成本二、质量模型1. 定义2. 几种模型3. 模型解读&#xff08;1&#xff09;Bohem质量模型&#xff08;2&#xff09;McCall质量模型&#xff08;3&#xff09;ISO/IEC 9126质量模型…

WSL2 支持挂载物理磁盘,Windows 可直接访问 ext4

喜欢就关注我们吧&#xff01;最新的 Windows Insiders Preview Build 为 WSL2 的命令行程序增加了新功能&#xff1a;wsl --mount&#xff0c;这个新参数支持在 WSL2 添加和挂载物理磁盘&#xff0c;用户通过它能访问 Windows 没有原生支持的 Linux 文件系统&#xff08;例如 …

2招解决并发问题,省几百万设备费用!说穿了很简单...

经大佬介绍&#xff0c;接了个技术顾问的私活儿&#xff0c;3天搞定报酬8000&#xff0c;Mark一下&#xff0c;也分享下经验心得。&#xff08;经大家要求&#xff0c;文末增加了一段接私活儿经验&#xff09;背景交代甲方是广东某国企信息部&#xff0c;美其名曰是邀请技术顾问…

「软件项目管理」一文详解软件配置管理计划

一文详解软件配置管理计划前言一、配置管理概述1. 配置管理(SCM)定义2. 软件配置项目(SCI)3. 基线4. 软件配置控制委员会&#xff08;SCCB&#xff09;二、软件配置管理过程1. 管理过程2. 管理过程解析&#xff08;1&#xff09;配置项标识、跟踪I. 定义II. SPM项目要求&#x…

Kubernetes探针踩坑记

1. 荒腔走板最近一两个月生产K8s集群频繁出现短时503 Service Temporarily Unavailable&#xff0c;还不能主动复现&#xff0c;相当郁闷&#xff0c;压力山大。HTTP 5xx响应状态码用于定义服务端错误。500 Internal Server Error&#xff1a;所请求的服务器遇到意外的情况并阻…

「软件项目管理」一文了解软件项目团队计划

一文了解软件项目团队计划序言一、人力资源计划1. 团队定义2. 项目组织结构&#xff08;1&#xff09;职能型&#xff08;2&#xff09;项目型&#xff08;3&#xff09;矩阵型3. 责任分配矩阵二、项目干系人计划1. 干系人定义2. 干系人识别3. 干系人参与分类4. 干系人参与评估…

leetcode40. 组合总和 II

一:题目 二:上码 class Solution { public:/**思路:1.题目中说的每个数字只在每个组合中使用一次的话 我们可以考虑 在递归遍历的时候 index1不断缩小范围&#xff08;因为这也是在一个大的集合中挑选小的集合&#xff0c;所以是需要记录index的&#xff09;2.但是我们在填写…

DDD:架构思想的旧瓶新酒?阿里等大厂却对它趋之若鹜!

4月&#xff0c;InfoQ 发布了软件架构与设计的趋势报告。在报告中可以看出&#xff0c;微服务、领域驱动设计等已经非常流行&#xff0c;并成为目前软件开发行业的主流趋势。大家都知道&#xff0c;微服务划分的一个重要理论基础就是领域驱动设计。但由于 DDD 门槛高、概念多&a…

「软件项目管理」一文浅谈软件项目风险计划

一文浅谈软件项目风险计划序言一、风险基本概念1. 风险的定义及特性2. 风险三要素3. 风险图示3. 风险类型&#xff08;1&#xff09;预测角度&#xff08;2&#xff09;范围角度二、风险管理过程三、风险识别1. 定义2. 风险识别方法3. 风险条目检查表之七个条目四、风险评估1. …

.NET Core 下使用 gRPC

gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架。https://grpc.io/docs/guides/https://github.com/grpc/grpc-dotnethttps://docs.microsoft.com/zh-cn/aspnet/core/grpc“gRPC 的主要优点现代高性能轻量级 RPC 框架。协定优先 API 开发&#xff0c;默认使用协议缓冲区…

leetcode93. 复原 IP 地址

一&#xff1a;每日论语解读 follow me !! 君子坦荡荡 小人常威威 二:题目 三:上码 class Solution { public:/**思路:1.分析题意本题依然是切割字符串(我们需要对要分割的字符串做出处理 需要判断我们截取的字符串是否合法)2。关于‘.’的处理 我们是在原字符串的基础上进…

ASP.NET Core整合Zipkin链路跟踪

前言在日常使用ASP.NET Core的开发或学习中&#xff0c;如果有需要使用链路跟踪系统&#xff0c;大多数情况下会优先选择SkyAPM。我们之前也说过SkyAPM设计确实比较优秀&#xff0c;巧妙的利用DiagnosticSource诊断跟踪日志&#xff0c;可以做到对项目无入侵方式的集成。其实还…

探秘react,一文弄懂react的基本使用和高级特性

一文详解react的基本使用、高级特性和周边插件⏰序言&#x1f4dd;一、React的基本使用1、JSX基本使用&#xff08;1&#xff09;变量、表达式&#xff08;2&#xff09;class和style&#xff08;3&#xff09;子元素和组件&#xff08;4&#xff09;原生 html2、条件判断&…

使用React hooks,些许又多了不少摸鱼时间

一文详解react-hooks&#x1f399;️前言一、&#x1f4fb;概述1、关于React Hooks2、认识React Hooks&#xff08;1&#xff09;回顾React函数式组件&#xff08;2&#xff09;函数组件的特点&#xff08;3&#xff09;class组件的问题&#xff08;4&#xff09;React 组件二、…

手把手教学之如何设计财务对账系统

在设计一个对账系统前&#xff0c;我们先想清楚&#xff0c;对账目的、方式、对账场景、使用对象。其次就是和财务了解一下&#xff0c;他们所期望的效果&#xff0c;毕竟他们是使用方。财务对账是一个琐碎而复杂的工作&#xff0c;极需要工作耐心和细心&#xff0c;还要求对账…

不平凡的2021,末流普本生秋招上岸大厂的历程

&#x1f4fb;叮&#xff01; 2021年接近尾声&#xff0c;周一也开始拾起了年终总结。 回顾2021&#xff0c;有喧嚣&#xff0c;也有欢呼&#xff1b;有奔溃&#xff0c;也有快乐。 但好在✏️ 对待一件又一件的小事上&#xff0c;始终保持着对自己的要求&#x1f4ca; 不…