Web安全:你必须知道的“Cookie安全”

时间: 2019-05-30阅读: 116标签: 安全

初识cookie

http是无状态的请求响应。每次的请求响应之后,连接会立即断开或延时断开(保持一定的连接有效期)。断开后,下一次请求再重新建立。在http连接时,通过cookie进行会话跟踪,第一次响应时设置的Cookie在随后的每次请求中都会发送出去。

Cookie还可以包括登陆认证后的身份信息。

大多数浏览器限制每个域能有50个cookies左右。存储的cookies最大值约为4kb,若超过这个值,浏览器就会删除一些cookie。

删除策略因浏览器而已。有兴趣的朋友可以自己做深入研究。

删除cookie的操作只需要设置过期值为过去的时间即可。cookie无法跨浏览器存在。


cookie的作用

同域内浏览器中发出的任何一个请求都会带上cookie,无论请求什么资源,请求时,cookie会出现在请求头的cookie字段中。

服务端响应头的set-cookie字段可以添加,修改和删除cookie,大多数情况下,客户端通过JS也可以添加,修改和删除cookie。

cookie经常用来存储用户的会话信息。比如,用户登陆认证后的session,之后同域内发出的请求都会带上认证后的会话信息,非常方便。所以攻击者特别喜欢盗取cookie,这相当于盗取了在目标网站上的用户权限。


Secure Cookie机制

Secure Cookie机制指的是设置了secure标志的cookie。Secure Cookie仅在https层面上安全传输,如果是http请求,就不会带上这个cookie。

这样能降低重要的cookie被中间人截获的风险。

不过,也不是说可以万无一失。因为secure cookie对于客户端脚本来说是可读可写的,可读就意味着secure cookie能被盗取,可写意味着能被篡改,所以还是存在一定的风险。


HttpOnly属性

Cookie的HttpOnly属性,指浏览器不要在除HTTP(和 HTTPS)请求之外暴露Cookie。

一个有HttpOnly属性的Cookie,不能通过非HTTP方式来访问,例如通过调用JavaScript(例如,引用document.cookie),因此,不可能通过跨域脚本(一种非常普通的攻击技术)来偷走这种Cookie。Facebook 和 Google 正在广泛地使用HttpOnly属性。

然而,目前的技术手段还是可以通过xss攻击获取httpOnly的cookie。有兴趣的朋友可以延伸阅读该篇:Stealing HttpOnly Cookie via XSS


Same-Site属性

当用户从a.com发起b.com的请求也会携带上Cookie,而从a.com携带过来的Cookie称为第三方Cookie。

为了防止CSRF(Cross-site request forgrey)攻击,可以使用SameSite属性。

Set-Cookie: CookieName=CookieValue; SameSite=Lax;Set-Cookie: CookieName=CookieValue; SameSite=Strict;

strict:浏览器在任何跨域请求中都不会携带Cookie,这样可以有效的防御CSRF攻击,但是对于有多个子域名的网站采用主域名存储用户登录信息的场景,每个子域名都需要用户重新登录,造成用户体验非常的差。

lax:相比较strict,它允许从三方网站跳转过来的时候使用Cookie。

更多延伸阅读:Using the Same-Site Cookie Attribute to Prevent CSRF Attacks


本地cookie与内存cookie

本地cookie与内存cookie,区别在于cookie设置的expires字段。

如果没有设置过期时间,就是内存cookie。随着浏览器的关闭而从内存中消失。
如果设置了过期时间是未来的某一个时间点,那这个cookie就会以文本的形式保存在操作系统本地,待过期时间到了才会消失。

很多网站为了提升用户的体验,省去每次用户登陆的麻烦,采用本地cookie的方式,让用户可以在未来的一个月,或者半年,永久等时间段内不需要进行登陆操作。

这也意味着,用户被攻击的风险变大了。攻击者通过xss得到这样的本地cookie后,能够在未来很长一段时间内,甚至是永久控制这目标用户的账号权限。

然而,即使采用内存cookie也存在一定的风险,攻击者可以给内存cookie加一个过期时间,使其变成本地cookie,这样还是无法避免以上的安全问题。说到底,用户账号是否安全与服务器端校验有关,包括重要cookie的唯一性(是否可预测),完整性(是否被篡改),过期等校验。


web性能与cookie

cookie在服务端和浏览器的通信中,主要依靠HTTP的响应头和请求头传输的,所以cookie会占据一定的带宽。

前面提到浏览器会为每一次HTPP请求自动携带上Cookie信息,但是对于同站内的静态资源,服务器并不需要处理其携带的Cookie,这无形中便浪费了带宽。

在最佳实践中,一般都会将静态资源部署到独立的域名上,从而可以避免无效Cookie的影响。


LocalStorage

LocalStorage也是浏览器本地存储数据的一个地方,是HTML5的特性。目前已经十分普及了。然而,localStorage并不会像cookie那样可以设置数据存活的时间限制。

只要用户不主动删除,localstorage存储的数据就会永久存在。

因此不建议将敏感信息存储在localstorage中,尤其用于身份验证的数据。localStorage没有对xss攻击做任何防御机制,一旦出现xss漏洞,存储在localstorage的数据及其容易被获取到。


来自:imooc编程手记(微信号:imooc--com)
作者:moweiyang0214  


链接: http://www.fly63.com/article/detial/3489

14个Linux系统安全小妙招

对于互联网IT从业人员来说,越来越多的工作会逐渐转移到Linux系统之上,这一点,无论是开发、运维、测试都应该是深有体会。曾有技术调查网站W3Techs于2018年11月就发布一个调查报告,报告显示Linux在网站服务器的系统中使用率高达37.2%

网站被劫持的方式都有哪些?

网络安全日益严峻,站长朋友们多多少少都遇到过被黑被劫持的经历,对于老老实实做人,认认真真做站的朋友来说,好不容易做出了一点成绩,一劫持就又回到解放前了,本期我们一起来探讨常见的网站被黑被劫持的手段有哪些

前端必须知道的 HTTP 安全头配置

在本文中,我将介绍常用的安全头信息设置,并给出一个示例。内容安全策略(CSP)常用来通过指定允许加载哪些资源来防止跨站点脚本攻击。在接下来所介绍的所有安全头信息中,CSP 可能是创建和维护花费时间最多的而且也是最容易出问题的

什么是SSL证书?SSL证书的好处

互联网发展至今,已经让人们对它产生了很大的依赖,很多交易都是在网上进行的。然而,网络攻击事件也在与日俱增,网络安全已经成为一件大事,这就不得不用到SSL证书了。

如何构建网络安全策略?

组织面临着对其信息系统和数据的诸多威胁。了解网络安全的所有基本要素是攻克这些威胁的第一步。网络安全是确保信息的完整性、保密性和可用性(ICA)的实践

最全 HTTP 安全响应头设置指南

CSP 通过指定允许加载哪些资源的形式,来防止跨站脚本注入。在本文所列的安全响应报头中,正确地设置和维护 CSP,可能是最耗时的,也是最容易出现风险的。在开发 CSP 的过程中,要谨慎充分地测试它

浏览器显示“网站连接不安全”,是什么原因?

Chrome 浏览器显示“网站连接不安全”,这可能是您最近访问网站时经常遇到的问题,浏览器地址栏中域名前面显示圆圈i图标和“不安全”字样,点击这个字样,就会看到红字警告“你与此网站之间建立的连接不安全”,这是怎么回事?

贯彻 10 项原则,构建 Linux 系统安全体系

通过大量的实践经验,我们总结出 10 个最关键且有效的安全原则,分别是纵深防御、运用 PDCA 模型、最小权限法则、白名单机制、安全的失败、避免通过隐藏来实现安全、入侵检测、不要信任基础设施

js安全问题:不安全的JS

在某些特别的场景下,我们需要编译执行外部输入的JS代码。在浏览器端,我们可以借助new Function 、eval等API。而在 node 端,我们可以借助vm模块实现一个沙箱,运行外部输入的JS 代码。但无论是浏览器端,还是node端

web安全之网络安全

web安全是网络安全的一部分,怎么说呢,网络安全是个大范围,可以引申为互联网安全。包括软硬件在内,例如其中的数据安全就是指从数据的产生-传输-存储等环节都要保证其安全性。那么web安全就是特指web层面的

fly63.com版权所有,内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权,请与小编联系!情况属实本人将予以删除!

广告赞助文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全