Cookie安全性问题
作用
http是无状态的协议。客户端与服务端建立连接传输数据,数据传输完毕就断开连接,下次请求再创建新的链接,所以请求的时候服务器根本不知道是不是同一个用户进行请求。cookie就是为了解决http无状态问题,服务器发送登录凭据Cookie给客户端,用户再次访问的时候就会发送服务器,服务器再进行比对,确认无误就会免密码操作。
每次都会携带在 header 中,对于请求性能影响。
cookie大小限制是4k,是每个name=value的value的值大概是4k
如何使用
1 | document.cookie = 'username=Ethan' |
生命周期
创建cookie的时候,会给cookie指定一个值:Expire,它就是指定cookie的有效期,也就是cookie的生命周期,超出设置的这个生命周期,cookie就会被清除。如果给这个值Expire设置为0或者负值,那么这样的设置就是在关闭浏览器时,就会清除cookie,这种方式更加安全。
作用域
支持同源策略
为什么不安全
1 | 0、每次请求都会带上cookie,浪费资源 |
IndexedDB
用于客户端存储大量结构化数据(包括文件和blobs)。没有存储上限的(一般来说不会小于 250M)。IndexedDB 是异步的。异步设计是为了防止大量数据的读写,拖慢网页的表现。会一直存在浏览器中,除非被清理。
1 | IndexedDB不是常用的调用方法,而是请求响应的模式。 |
sessionStorage和localStorage和cookie的区别
1 | 作用域:localStorage只要在相同的协议、相同的主机名、相同的端口下,就能读取/修改到同一份localStorage数据。sessionStorage比localStorage更严苛一点,除了协议、主机名、端口外,还要求在同一窗口(也就是浏览器的标签页)下 |
如何解决
1 | 1、设置cookie有效期不要过长 |
CSRF的安全性问题
概念及原理
1 | 全称:跨站请求伪造。 |
防范措施
1 | 1、验证HTTP Referer字段 |
XSS的安全问题
概念及原理
1 | 1、全称 |
XSS的防范措施
1 | // 反射型 |
CSRF和XSS的区别
CSRF:1、需要用户先登录网站A,获取 cookie。2、是利用网站A本身的漏洞,去请求网站A的api。
XSS:1、不需要登录。2、是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容。