关于cookie的一点总结

最近在看道哥的《白帽子讲web安全》,关于CSRF中的cookie读取部分闹不明白:

问题

cookie分为临时cookie(书里称为session-cookie)和本地cookie(书里称为the-third-cookie),临时cookie在set-cookie时没有限定时限,所以它保存在浏览器内存中,关闭浏览器即消失;本地cookie设定了时限,保存在本地,到达时限即消失。

书中首先指出,如果浏览器从一个域的页面中,要加载另一个域的资源,由于安全原因,某些浏览器会阻止本地cookie的发送,但不会阻止session cookie的发送。

书中做了实验,在http://www.a.com/cookie.php中,给浏览器写入两个cookie,一个临时,一个本地:


那么浏览器获得了两个cookie,一个临时cookie1=123,一个本地cookie2=456。

此时在另外一个域中,有一个页面http://www.b.com/csrf-test.html,此页面构造了CSRF以访问www.a.com:


我们知道同源策略是允许通过src来加载资源的,但是在这里,临时的session被发送,本地cookie被浏览器阻止了。

IE出于安全考虑,默认禁止浏览器在,

http://www.a.com/test.php是一个对a.com域设置cookie的页面,内容为:


当请求http://www.b.com/test.html时,iframe会跨域请求www.a.com/test.php。test.php会尝试Set-Cookie,所以浏览器会收到一个Cookie。

但是作者指出,这里set-cookie并不会成功,原因是同源策略的限制,所以当再一次请求http://www.b.com/test.html时,并不会发送刚才收到的Cookie,这里不论是临时cookie还是本地cookie。

我的困惑在于,这次实验和上次实验,同样是