今天对登陆访问的安全以及web客户端存储作了一些大体的学习,决定在这方面加深理解,记录在博客里。第一个接触到的是Cookie...html
在学习cookie的使用时发现其名称以及存储的字符串值是必须通过URL编码的。web
然而网上的许多示例(包括 w3school中文站)都没有作这一处理,因此三哥参考阮一峰老师的关于URL编码博文找到了解决方案,在这里分享:浏览器
cookieUtil.js:
1 //cookieUtil.js 2 var cookieUtil = { 3 4 //读取"name"对应cookie的值 5 get : function(name){ 6 var cookieName = encodeURIComponent(name)+"=", //对传入name参数URL编码 7 cookieStart = document.cookie.indexOf(cookieName), 8 cookieValue = null; 9 10 if(cookieStart > -1){ 11 var cookieEnd = document.cookie.indexOf(";",cookieStart); 12 if(-1 == cookieEnd){ 13 cookieEnd = document.cookie.length; //cookie值为空 14 } 15 //对cookie保存的值URL解码 16 cookieValue = decodeURIComponent(document.cookie.substring(cookieStart+cookieName.length,cookieEnd)); 17 } 18 return cookieValue; 19 }, 20 21 //建立或设置cookie 其中name将做为某一域内的惟一标示、不可更改 22 set : function(name,value,expires,path,domain,secure){ 23 //对名称和值URL编码 24 var cookieText = encodeURIComponent(name)+"="+encodeURIComponent(value); 25 26 if(expires instanceof Date){ 27 cookieText += "; expires="+expires.toGMTString(); 28 } 29 if(path){ 30 cookieText += "; path="+path; 31 } 32 if(domain){ 33 cookieText += "; domain="+domain; 34 } 35 if(secure){ 36 cookieText += "; secure"; 37 } 38 39 //将根据name是否存在决定是否添加新的cookie字符串,须要注意:a、cookie长度(limit:4095B);b、每一个域容许的cookie个数(各浏览器决定) 40 document.cookie = cookieText; 41 }, 42 43 //删除cookie 44 unset : function(name,path,domain,secure){ 45 this.set(name,"",new Date(0),path,domain,secure); 46 } 47 48 }
updating安全
一、 关于URL编码cookie
二、Cookie/Session机制详解dom