原文:set-cookie中的SameSite属性

再见,CSRF:讲解set-cookie中的SameSite属性

2016-04-14 13:18:42 来源:360安全播报 作者:暗羽喵 
阅读:18836次 点赞(17) 收藏(21)


SameSite-cookies是一种机制,用于定义cookie如何跨域发送。这是谷歌开发的一种安全机制,并且现在在最新版本(Chrome Dev 51.0.2704.4)中已经开始实行了。SameSite-cookies的目的是尝试阻止CSRF(Cross-site request forgery 跨站请求伪造)以及XSSI(Cross Site Script Inclusion (XSSI) 跨站脚本包含)攻击。详细介绍可以看这一篇文章

SameSite-cookies之前一直受到广大安全研究人员的关注,现在它终于在Chrome-dev上工作了,这是一个好消息。这意味着如果你有一个使用cookies的网站,你应该开始支持SameSite-cookies。事实上,这非常容易。你只需要在Set-Cookie中添加一个SameSite属性。需要注意的是,SameSite需要一个值(如果没有设置值,默认是Strict),值可以是Lax或者Strict。你可以在草案中阅读这些属性的相关定义,但这里我会简单解释几种常见的属性,这样叫你就可以很容易的理解它们是如何工作的。

使用语法是SameSite=<value>, 例如SameSite=Lax

Strict

Strict是最严格的防护,有能力阻止所有CSRF攻击。然而,它的用户友好性太差,因为它可能会将所有GET请求进行CSRF防护处理。

例如:一个用户在reddit.com点击了一个链接(GET请求),这个链接是到facebook.com的,而假如facebook.com使用了Samesite-cookies并且将值设置为了Strict,那么用户将不能登陆Facebook.com,因为在Strict情况下,浏览器不允许将cookie从A域发送到B域。

Lax

Lax(relax的缩写?)属性只会在使用危险HTTP方法发送跨域cookie的时候进行阻止,例如POST方式。

例1:一个用户在reddit.com点击了一个链接(GET请求),这个链接是到facebook.com的,而假如facebook.com使用了Samesite-cookies并且将值设置为了Lax,那么用户可以正常登录facebok.com,因为浏览器允许将cookie从A域发送到B域。

例2:一个用户在reddit.com提交了一个表单(POST请求),这个表单是提交到facebook.com的,而假如facebook.com使用了Samesite-cookies并且将值设置为了Lax,那么用户将不能正常登陆Facebook.com,因为浏览器不允许使用POST方式将cookie从A域发送到B域。

注意

根据草案中所说,Lax并没有充分防止CSRF和XSSI攻击。但我还是建议先使用Lax进行一个较好的CSRF攻击缓解措施,之后再考虑是否使用Strict。

同时,需要注意,不要将所有的cookie都设置SameSite属性,因为不同的cookie有不同的用途,如果你的网站使用有会话cookie,它可以被设置为Lax属性;其他的可以设置为Strict属性。这可能是一种合适的方式。

最新文章

  1. react+redux完整项目
  2. ios基础篇(二十四)—— 文字、图片的绘制及其自定义Button
  3. Linux下Redis开机自启(Centos)
  4. canvas入门(画圆)
  5. 修改Android签名证书keystore的密码、别名alias以及别名密码
  6. 李洪强iOS开发之上传照片时英文改中文
  7. [wikioi]关押罪犯
  8. 浅析Linux操作系统工作的基础
  9. bootstrp-select插件使用
  10. Update Case的用法与execute执行字符串
  11. windows中如何查看某个端口被谁占用
  12. 开涛spring3(5.1&amp;5.2) - Spring表达式语言 之 5.1 概述 5.2 SpEL基础
  13. Java IO编程全解(二)——传统的BIO编程
  14. Django-website 程序案例系列-13 中间件
  15. cygwin下切换到其他磁盘
  16. react native项目的创建和运行
  17. Chapter 2 软件过程
  18. YFCC 100M数据集分析笔记
  19. Android 程序架构: MVC、MVP、MVVM、Unidirectional、Clean...
  20. Menubar

热门文章

  1. adb的一些命令
  2. 基本PSO算法实现(Java)
  3. sass/scss 和 less对比
  4. 如何配置WAMP环境(主要是Apache与PHP)
  5. 关于ios在H5页面长按识别二维码无效
  6. Python排序算法之选择排序定义与用法示例
  7. [C++]多源最短路径(带权有向图):【Floyd算法(动态规划法)】 VS n*Dijkstra算法(贪心算法)
  8. 每次开机后需要重新连接wifi才能上网
  9. redis watch 加 事务实现秒杀
  10. CentOS 7下Cloudera Manager及CDH 6.0.1安装过程详解