上篇文章 中说:cookie必须在 同一网站 下且 cookie的path路径为当前url或者是当前url的父级 时才是共享的。
具体怎么理解呢?看下面解释
首页介绍下php中设置cookie的函数setcookie()
需要注意的且常用的有俩点
做几个测试就知道了,主要测试以下几点
设置一个cookie变量a,以我们上面的预测,客户端的path应为 /
看到path为 /, 也就是说在整个域名内任何path的cookie都应该能访问该cookie变量a
设置一个cookie变量b,以我们上面的预测,该cookie变量b的path应为/api/test,而且应该包含path为/api/test,/api和/的cookie变量,也就是包含我们上面设置的cookie变量a
发现path确实/api/test,证明我么的第一个观点,而发现能共享cookie变量a,也证明了我们的第二个观点。
要设置cookie的保存路径,可以设置path值,如设置路径为根目录:$.cookie("example", "foo",{path:"/"})
如果要设置路径为/admin,则:
$.cookie("example", "foo",{path:"/admin"})
cookie的几个属性:expire:cookie的生存期,默认是暂时存储
path:cookie的关联网页,默认是当前目录的网页或者当前目录下的字子目录
domain:设置共享cookie的域名(同一主域名下)切将path设为PATH='/'
secure属性:在https协议下生效,才会传递到服务器端,http协议不会传递。
HttpOnly属性:无法通过脚本程序(js)读取到cookie信息,有效防止XSS攻击。
安全性:出于安全方面的考虑,只有与创建 cookie 的页面处于同一个目录或在创建cookie页面的子目录下的网页才可以访问
同域情况:让这个设置的cookie 能被其他目录或者父级的目录访问的方法:
document.cookie = "userName = 独行冰海path=/"
相同主域不同二级域名的跨域情况:
document.cookie = "username=独行冰海path=/domain=baidu.com"
chrome限制js设置cookie,IE可在本地JS设置cookie
A站点通过script src标签的跨站请求B站点如果请求数据是img 则不会带cookie等数据
如果请求数据是一个get请求地址,则cookie会随请求发出(此时cookie是B站点cookie)
根据这个特性我们可以构造CSRF攻击
实验截图
Cookie限制:
(1)cookie个数限制
IE :原先为20个,后来升级为50个
Firefox: 50个
Opera:30个
Chrome:180个
Safari:无限制
当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。
(2) 浏览器所允许的每个Cookie的最大长度(localstorage为5M)
Firefox和Safari:4079字节
Opera:4096字节
IE:4095字节
(3) 服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,因此还会受到服务器请求头长度的影响。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)