cookie localStorage sessionStoreage

328 阅读1分钟

cookie

  • Cookies是浏览器提供的功能。Cookies是很古老很成熟的HTTP状态保持办法。Cookies可以设置HTTPONLY来阻止恶意js获取SessionID。
  • Cookies还有同源策略,使用协议+域名/IP+端口号来确定是否是同源,非同源不能读取Cookies。
  • Cookies一般只能存储4KB字符串内容,Cookies可以设置过期日期。
  • 您可以在cookie上设置HTTPOnly标志,以便无法通过JavaScript访问它。
  • 单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

Storage

Storage是HTML5的存储技术.在移动端浏览器上一般提供2.5M左右的存储空间。 在PC端浏览器上能够提供5M左右的存储空间.Storage分为sessionStorage和localStorage.sessionStorage存储的数据的在页面关闭也就是session结束的时候就会被销毁,而localStorage数据长期有效除非用户手动清空浏览器数据。

XSS攻击

假设一个没有防护的网站 使用localStorage存储sessionID信息。

用户A 登录http://a.com/a 后发布文章

输入let sessionID = localStorage.getItem('sessionID');

用户B 登录http://a.com/b B用户此时访问A的地址 A就可以拿到B用户的sessionID

  • 所以防止XSS攻击 禁止普通用户编辑、发布带有任何js内容。
  • 前端显示之前在字符串前后加"或者将用户输入变为字符串输出。

Storage中的数据容易被偷

  • 大部分浏览器明文存储Storage中的信息。
  • DNS劫持
  • 中间人攻击

防止数据被偷

  • 使用DNSSEC
  • 只使用https协议。http请求全部重定向到https请求。