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请求。