cookie、xss、localStorage等。。

230 阅读4分钟

1、cookie

cookie就是一些信息以文件的形式存储在客户端计算机上,当用户访问某个网站时可以通过cookie向访问电脑上存储数据。

cookie的作用:在浏览器中进行数据的存储,用户名,密码;

cookie的存储数据类型为字符串类型,存储的容量有5kb;

cookie默认是临时存储的,当浏览器关闭时自动销毁。

cookie 的作用域为当前域,有文件夹路径的区分,域中的文件夹存储

存储的位置都是以这个域作为存储空间的,别的域不能访问 1、刷新页面是可以使用 2、跳转到当前域所在另外页面时可以获取前面cookie存储的数据内容

如果想长时间放入一个cookie,此时需要设置一个过期时间。

cookie也有可能被禁用,当用户非常注重个人隐私保护时可能会禁用,cookie是与浏览器相关的,即使你访问同一个页面时,不同浏览器所保存cookie也是不能相互访问的。cookie可能会被删除,因为每个cookie都是硬盘中的一个文件。cookie的安全性也不够高,所有cookie都是以纯文本的形式记录于文件中,所以说如果需要保存用户名或者密码时最好事先经过加密处理。

存储cookie数据,获取cookie数据

在JS中,可以直接通过document对象的cookie属性来设置和读取,cookie存储时是通过键值对的方式来存储,一个网站可以创建多个cookie,不同的cookie可以拥有不同的值。

document.cookie = 'name=value'//存储cookie数据

直接可以用document的cookie属性来获取cookie值,获取到就是cookie中 存放的一个字符串,如果要进行使用还需要使用相应string方法来处理。

document.cookie//获取cookie数据

在默认情况,cookie都是临时存在的,在一个窗口打开时设置cookie,只要浏览器不关闭cookie一直有效,但当页面完全关闭时cookie也就随之消失,如果希望 cookie在关闭浏览器后还可以 存在,就可以通过expires来给cookie设置一个终止日期。

var date=new Date();
date.setMinutes(6);
document.cookie="name=aaa;expires="+date.toUTCString();

在到达终止日期后,cookie就会随之消失,设置时一定要使用UTCString来转换,它这个日期只能识别格里尼治时间。

相应的可以通过这种方法来删除现有的cookie值,只需要将时间设置为当前时间即可。

var date=new Date();
document.cookie="name=aaa;expires="+date.toUTCString();

2、xss

xss攻击全称跨站脚本攻击,是为不和层叠样式表的缩写混淆所以将跨站脚本攻击缩写为XSS,它是一种在wbe应用中计算机的安全漏洞,它允许恶意web用户将代码植入到提供到给其他用户使用的页面中。

xss能够攻击需要两点:一是需要向web页面输入恶习代码,二是这些 代码可以被浏览器成功执行。例如在浏览器的评论区中植入script脚本代码等。当脚本代码上传至服务器如果未被识别时就可能会被浏览器执行。

解决这系列的方法只需要判断这个字符串中有没有我们不想去让它存在的语言,判断有没有含有script或者其他的标记做出相应的处理即可。

str=str.replace(/<\/?(script)>/gi,"($1)");//使用正则来查询,进行相应处理。
str=str.replace(/href=('|")javascript:.*?\>/gi,"");

3、localStorage、sessionStorage

localStorage:本地存储,用于持久化的本地存储,除非主动删除数据,否则数据永远不会过期。

sessionStorage:回话存储,用于本地存储一个会话中的数据,这些数据当在关闭浏览器后数据也会随之销毁。

他们都是window对象的属性

他们都有这样几个方法

localStorage.setItem('name','aaa')//存储数据
localStorage.getItem('name')//获取数据 
localStorage.removeItem('name')//删除某个数据
localStorage.clear()//清除所有数据

localStorage和sessionStorage他们只能存储字符串数据,如果当需要存入数组或者对象时,可以使用JSON.sringify的方法用来转换,当需要取出的时候也可以在使用JSON.parse的方法转换

var arr=[1,2,3];
localStorage.arr=JSON.stringify(arr);
var arr=JSON.parse(localStorage.arr);

4、localStorage、sessionStorage与cookie的区别

cookie数据始终在同于http请求中携带,意思就是cookie在浏览器和服务器之间来回传递。cookie会自动把数据发给服务器,它还有路径的概念,可以限制cookie只属于某个路径下。localStorage和sessionStorage不会自动把数据发给服务器,仅在本地保存。

他们的存储大小限制也不同,cookie数据不能超过4k,因为每次http请求都会携带cookie所以它只适合保存很小的数据,而localStorage和sessionStorage的存储也有上限,不过 比cookie大的多。

作用域不同,sessionStorage无法再不同窗口的浏览器共享就算是同一个页面,localStorage和cookie也是在所有同源窗口中