Cookie安全问题与防范

前言 Cookie 往往用来存储用户的某些相关信息,例如身份,配置等。Cookie 使用起来非常简单和方便,然而如果不加注意,它又可能成为我们网站的安全隐患,带来极大的风险。 那么不正确地使用 Cookie 有哪些安全问题呢? Cookie 安全问题 Cookie篡改 这是最容易出现的情况,也就是直接修改 Cookie 的内容。我们知道,Cookie 是存储在客户端的,所以里面的内容可以通过浏览器的控制台或者 js 代码进行修改的。因此 Cookie 相对而言是不可信的,如果我们把一些重要的信息,例如权限信息存在 Cookie,很容易就被有心人篡改,导致越权问题。 Cookie 劫持 很多网站是用 Cookie 来做用户识别的,例如 Cookie 里存储了 Session id,通过Session id 来获取更进一步的用户信息。因此如果用户的 Cookie 被劫持了,盗用者是可以用这个 Cookie 来伪装成该用户来进行网站操作的。Cookie 劫持一般和 XSS 攻击一起使用,先通过 XSS 攻击获得了在页面上运行 js 的能力,然后通过 js 读取 Cookie,并发送给远程的服务器。例如 除了通过 XSS 攻击来劫持 Cookie 外,攻击者还可能在网络节点中嗅探到 HTTP 连接的 Cookie。HTTP 连接采用的是明文传输,相当于所有信息都是在网络上裸奔的,很容易就会被有心人窃取到了。 Cookie 作用域攻击 Cookie 有两个很重要的属性:Domain 和 Path,用来指示 Cookie 的作用域。不同作用域下的 Cookie 可以同时存在,例如我们可以有一个 a.b.com下的 Cookie aaa,也可以同时有一个*.b.com下的 Cookie aaa。前者在 a.b.com下生效,后者在b.com的所有子域下生效。 在某些情况下,如果我们的 Cookie 作用域设置得太高,即使我们开启了 Cookie 安全选项,攻击者仍可能通过设置一个更小作用域的 Cookie 来覆盖掉我们设置的 Cookie,使得在这个小作用域内,生效的不是我们设置的 Cookie,而是攻击者设置的 Cookie。 介绍了这么多不正确地使用 Cookie 带来的问题,那我们该如何来解决呢? Cookie安全防范 不放重要数据,重要数据放Session。我们已经知道 Cookie 不安全了,就不要作死非把重要数据放在 Cookie 里了 Cookie 数据加签名。对 Cookie 数据添加签名,这样 Cookie 如果被篡改了,服务端使用的时候通过校验签名就能发现了。 Cookie数据加密。加密后数据就很难篡改了,但是加解密过程会带来性能损耗,这个就要进行衡量了。 开启 Cookie 的 httponly 参数,让 Cookie 只能在网络请求中被传输,避免js操作和获取 Cookie 全站 HTTPs + Cookie secure 设置。避免 Cookie 在网络传输过程中被劫持。仅仅设置全站 HTTPs 是不够的,还得开启 Cookie secure 设置,否则当secure的限制没有开启时,那么在一个HTTPs 的网站中,一个 XSS 攻击还是能通过 HTTP 读取到 HTTPs 下的 Cookie。 设置更小作用域的 Cookie,尽可能给 Cookie 设置合适且小的作用域。 Enjoy it ! 如果觉得文章对你有用,可以赞助我喝杯咖啡~ 版权声明 转载请注明作者和文章出处 作者: X先生 首发于 https://www.jianshu.com/p/e78cd310b360

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):