前言

最近在本地调试时,发现请求接口提示“未登录”,通过分析HTTP请求报文发现未携带登录状态的Cookie:

PS:登录状态Cookie名是TEST

再进一步分析,发现Cookie的属性SameSite的值是Lax:

在web.config里设置sameSite="None"即可:

<system.web>
<httpCookies sameSite="None"/>
<sessionState cookieSameSite="None" />
<authentication mode="Forms">
<forms cookieSameSite="None" />
</authentication>  

SameSite的作用

SameSite Cookie是用于防止CSRF攻击的。

因为HTTP是无状态的,所以以前的网站是没有登录这个概念。自从Cookie面世后,绝大多数的网站采用Cookie来记录用户状态。Cookie是个好东西,但它不安全,其中一个原因是因为Cookie最初被设计成了允许第三方网站发起的请求中携带,CSRF攻击就是利用了Cookie的这一“弱点”。

防止CSRF攻击的办法已经有CSRF token校验和Referer请求头校验。为了从源头上解决这个问题,Google起草了一份草案来改进HTTP协议,那就是为Set-Cookie响应头新增SameSite属性,它用来标明这个Cookie是个“同站Cookie”,同站Cookie只能作为第一方Cookie,不能作为第三方Cookie,SameSite有两个属性值:Strict和Lax。

SameSite=Strict:
严格模式,表明这个Cookie在任何情况下都不可能作为第三方Cookie,绝无例外。比如说假设b.com设置了如下Cookie:

Set-Cookie: aaa=1; SameSite=Strict
Set-Cookie: bbb=2

你在a.com下发起的对b.com的任意请求中,aaa这个Cookie都不会被包含在Cookie的请求头中,但bbb会。

SameSite=Lax:
宽松模式,比Strict放宽了点限制:假如这个请求是改变了当前页面或者打开了新页面,且同时是个GET请求(从语义上说GET是读取操作,比POST更安全),则这个Cookie可以作为第三方Cookie。比如说假设b.com设置了如下Cookie:

Set-Cookie: aaa=1; SameSite=Strict
Set-Cookie: bbb=2; SameSite=Lax
Set-Cookie: ccc=3

当用户从a.com点击链接进入b.com时,aaa这个Cookie不会被包含在Cookie请求头中,但bbb和ccc会,也就是说用户在不同网站之间通过链接跳转是不受影响了。但假如这个请求从a.com发起的对b.com的异步请求,或者页面跳转是通过表单的Post提交触发的,则bbb也不会发送。

Cookie:SameSite,防止CSRF攻击的更多相关文章

  1. SameSite Cookie,防止 CSRF 攻击

    因为 HTTP 协议是无状态的,所以很久以前的网站是没有登录这个概念的,直到网景发明 cookie 以后,网站才开始利用 cookie 记录用户的登录状态.cookie 是个好东西,但它很不安全,其中 ...

  2. 前端安全系列之二:如何防止CSRF攻击

    原文:https://my.oschina.net/meituantech/blog/2243958 背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题 ...

  3. 前端安全系列之二:如何防止CSRF攻击?

    背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XSS.CSRF 等安全问题之外,又时常遭遇网络劫持 ...

  4. 前端安全系列:如何防止CSRF攻击?

    背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XSS.CSRF 等安全问题之外,又时常遭遇网络劫持 ...

  5. 前端安全系列(二):如何防止CSRF攻击?

    前端安全系列(二):如何防止CSRF攻击?   背景 随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点.在移动互联网时代,前端人员除了传统的 XS ...

  6. 如何防止CSRF攻击?

    CSRF攻击 CSRF漏洞的发生 相比XSS,CSRF的名气似乎并不是那么大,很多人都认为CSRF“不那么有破坏性”.真的是这样吗? 接下来有请小明出场~~ 小明的悲惨遭遇 这一天,小明同学百无聊赖地 ...

  7. Java 安全之:csrf攻击总结

    最近在维护一些老项目,调试时发现请求屡屡被拒绝,仔细看了一下项目的源码,发现有csrf token校验,借这个机会把csrf攻击学习了一下,总结成文.本文主要总结什么是csrf攻击以及有哪些方法来防范 ...

  8. Cookie安全与CSRF和XSS攻击知识点收集

    个人简单理解: 1.XSS最简单的理解就是可以在表单提交的内容上嵌入JS执行代码,然后页面渲染的时候没有过滤时会自动执行这个脚本. 2.CSRF可以理解为当你登录了京东,浏览器上保存了你登录的Cook ...

  9. csrf攻击与防范

    CSRF(Cross Site Request Forgeries)跨网站请求伪造,也叫XSRF,通过伪装来自受信任用户的请求来攻击利用受信任网站. 与对比 xss:本网站运行了来自其它网站的脚本 c ...

随机推荐

  1. CF453A Little Pony and Expected Maximum 期望dp

    LINK:Little Pony and Expected Maximum 容易设出状态f[i][j]表示前i次最大值为j的概率. 转移很显然 不过复杂度很高. 考虑优化.考虑直接求出最大值为j的概率 ...

  2. number类型转date类型

    遇到用数字记录日期时,进行查询转换. create or replace function num_to_date(s in number) return dateisbegin return to_ ...

  3. 基于asp.net core 从零搭建自己的业务框架(二)

    前言 对于项目的迭代,如何降低复杂性的要求高于性能以及技术细节的 一个易用的项目,才能迭代到比拼性能,最后拼刺刀的阶段 传统单体项目,都是传统三层,直接请求响应的模式,这类称为Rpc模式,易用性上非常 ...

  4. Docker初探之Windows篇

    一.什么是Docker? Docker是一个开源的应用容器引擎,可以轻松地为任何应用创建一个轻量级.可移植.自给自足的容器.开发者在本地编译测试通过的容器可以批量地在生产环境中部署,包括虚拟机和其他平 ...

  5. ORACLE在linux下的启动方法

    一.启动方法 方法1: Sql代码 cd $ORACLE_HOME/bin #进入到oracle的安装目录  ./dbstart #重启服务器  ./lsnrctl start #重启监听器 ---- ...

  6. 17、Java 三大特性之 多态

    知识点:多态的概念.java中多态的使用(方法重载和重写.子类对象的多态性) .多态使用的好处 1.什么是多态? 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程 ...

  7. RabbitMQ 基础概念进阶

    上一篇 RabbitMQ 入门之基础概念 介绍了 RabbitMQ 的一些基础概念,本文再来介绍其中的一些细节和其它的进阶的概念. 一.消息生产者发送的消息不可达时如何处理 RabbitMQ 提供了消 ...

  8. 初识HTML(二)

    目录 HTML表格 HTML列表 HTML表格 表格主要显示.展示数据. 表格基本语法:<table>定义一个表格,<tr>定义表格中的一行,<td>定义一行中的某 ...

  9. C#LeetCode刷题之#66-加一(Plus One)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3684 访问. 给定一个由整数组成的非空数组所表示的非负整数,在该 ...

  10. Homekit_Dohome_月球灯

    此款月球灯可以使用Homekit或者Dohome App进行有效的智能控制,支持多种色彩和亮度调节,功能强大,有兴趣的可以去以下链接看看: https://item.taobao.com/item.h ...