cookie
- cookie是根据域和文件夹存储的
- 不同的域不能相互访问对应的cookie ip和端口不同不能相互访问
- 同一个域,子文件夹可以访问父文件夹的cookie,但是父文件夹不能访问子文件夹的cookie
- 顶级域不能访问子域任何cookie,但是子域可以访问顶级域的cookie
- cookie原指临时存储,但是有时需要长时间存储,通过expries设置过期时间
- cookie存储空间仅有5k,针对一个域和文件夹来说
- 当访问该域的网站会自动携带cookie 在服务器和客户端直接往返传递(同源传递)
- 当浏览器关闭时,清空临时存储的cookie
var date=new Date();
date.setDate(30);
date.setFullYear(2999);
//存储时间必须使用标准时间,格林尼治时间
document.cookie="sex=男;expires="+date.toUTCString();
//存储key相同时会覆盖
document.cookie="sex=男";
//如果设置过期时间会直接清除
var date=new Date();
date.setDate(28);
document.cookie="sex=男;expires="+date.toUTCString();
公钥和私钥
XSS攻击
- 利用评论,聊天,收集用户体验等文本框让用户输入内容时,用户输入的不是文本内容而是,放入带script标签的脚本内容,这些脚本内容被提交到服务器,服务器存储后再页面评论中展示,凡是看到该评论的用户都会执行这段脚本,原因是脚本以html标签形式被植入在页面中
- 使用不清晰或者带有引诱性质图片,使用点击图片,执行超链接href中javascript脚本
解决方法:
1、 上传用户输入内容前将所有script标签通过正则表达式转义
2、 获取服务发过来的数据时,也做转义展示
3、 尽量处理数据时不要使用innerHTML,而使用DOM的textContent保证这个内容是纯文本而不是标签
webstorage
不管是cookie还是webstorage只能存储字符串
localStorage是长期存储
sessionStorage是临时存储 关闭浏览器就会清空,
同时即使在同源的其他窗口中也不能获取,新窗口不能获取
没有路径概念,只要是当前域都可以调用
存储大小超过5M
localStorage.name="xietian";
localStorage.removeItem("name");//删除
localStorage.clear();//清空