Cookie安全探索

在使用前端保存数据时,我通常会使用LocalStorage,相较于Cookie,前者更方便,容量更大,而且保存时间长。但是对于后端来说,我们同样需要在前端保存一些数据并与之交互,也就是在HTTP头中携带Cookie。

Cookie的基本属性

  • name(名称)
  • value(值)
  • domain(子域)
  • path(站点路径)
  • expires/Max-Age(过期时间)
  • Size(大小)
  • http(仅HTTP读取)
  • secure(安全性)

具体的属性用法,网上都有介绍,就不一一赘述

Cookie安全问题

  • 不唯一:Cookie是由三元组[name, domain, path]来确定的,是会出现重名,即不是唯一的
  • 易于获取:前面提到了Cookie是被携带在HTTP上面的,所以很容易从请求上截取到Cookie
  • Cookie注入:容易截取的同时,Cookie也易于修改

思考

基于上面的问题,我有思考过当前我所做的项目存在的安全问题,虽然只是一个内部的管理页面,有内网限制。但公司员工如果发现安全漏洞,岂不是可以攻击系统了。

看了很多相关的博文,对我当前项目的Cookie进行了一些基础的防护:

  • 将一些较为敏感的信息作为post请求字段进行传递
  • 对系统的用户输入提交进行脚本过滤
  • 设置secure为true
  • 设置HTTPOnly属性
  • 定期自动清理一些不必要的Cookie字段

END