javascript获取session_【学习笔记】浏览器基础2: Cookie与Session
第11课-THE ELEVENTH-浏览器基础: Cookie与Session课程入口(付费)个人背景Li,本科,电子信息工程专业,毕业一年半,有javascript,php,python语言基础,目前自学Web安全中。浏览器基础2: Cookie与Session01Cookie的作用方式1.1设置一个cookie因为http是无状态的,要跟踪用户的状态比如登陆信息,就得在...
第 11 课
-THE ELEVENTH-
浏览器基础: Cookie与Session
课程入口(付费)
个人背景
Li,本科,电子信息工程专业,毕业一年半,有javascript,php,python语言基础,目前自学Web安全中。
浏览器基础2: Cookie与Session
01Cookie的作用方式
1.1 设置一个cookie
因为http是无状态的,要跟踪用户的状态比如登陆信息,就得在每一个http请求中多放一段数据来进行标记。http规范中已经设计好了一个位置让你存放,就是消息头中的cookie段。而cookie可以由服务端发送指令或者客户端通过JavaScript脚本让浏览器生成并保存。
例子:服务端如何在响应的消息头中告诉浏览器设置一个cookie
set-cookie: PHPSESSID=52bbf096pspn59jhp136iba1jr; path=/abc; domain=.pockr.org; secure; HttpOnly
set-cookie: _sso_identity=abc; expires=Sun, 27-May-2018 20:38:11 GMT; Max-Age=604799; path=/; domain=.pockr.org; HttpOnly
这两句set-cookie,是说明服务端生成了2个cookie。
第一个cookie的信息:名字叫PHPSESSID,值是52bbf096pspn59jhp136iba1jr ,path是cookie的有效url路径,有效路径的概念类似于文件夹名称。
域名范围是.pockr.org,是说这个cookie会在pockr.org,以及pockr.org的二级域名的访问中传播,但是需要结合path一起看。
secure的意思是在https协议下的请求才会把cookie发送,如果你用http协议访问的话,就不会发送cookie。这个是为了安全起见。毕竟http协议是明文的协议,一旦你被劫持了,cookie被第三方窃取到了,你的信息就会泄露出去。
HttpOnly则是让浏览器禁止JavaScript读取这个cookie,同样也是为了安全起见。有时候网站用了一些第三方服务,需要加载第三方的JavaScript脚本,如果第三方JavaScript脚本被篡改了,最低程度能保证你的cookie信息不会被JavaScript脚本获取而泄露出去。
1.2 了解cookie的有效性

-
第一个地址是无效的,因为浏览器遵循secure标记,只在https中传输这个cookie,而这个地址是http;
-
第二个地址,也是无效的。因为这个url的path是/abcd,与cookie的/abc不一致;
-
第三个地址,它是有效的。因为/abc/1,相当于文件夹abc下面有一个文件是1,是包含关系;
-
第四个地址是有效的,完全匹配,没什么解释的必要;
-
第五个地址是有效的,b.pockr.org符合cookie中domain=.pockr.org的规则;
-
第六个地址是无效的,a.b.pockr.org是一个三级域名,cookie中的domain=.pockr.org没有规定三级域名是有效的。
2.1 Session是什么
Session是存在服务器的一种用来存放用户数据的类HashTable结构。
浏览器第一次发送请求时,服务器自动生成了一HashTable和一Session ID来唯一标识这个HashTable,并将其通过响应发送到浏览器。
浏览器第二次发送请求会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。
一般这个值会有个时间限制,超时后毁掉这个值,默认30分钟。当用户在应用程序的 Web页间跳转时,存储在 Session 对象中的变量不会丢失而是在整个用户会话中一直存在下去。
2.2 Cookie与Session的区别
存储数据量方面:session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象。
一个在客户端一个在服务端。因Cookie在客户端所以可以编辑伪造,不是十分安全。
Session过多时会消耗服务器资源,大型网站会有专门Session服务器,Cookie存在客户端没问题。
域的支持范围不一样,比方说a.com的Cookie在a.com下都能用,而www.a.com 的Session在api.a.com下都不能用,解决这个问题的办法是JSONP或者跨域资源共享。
六
下期更新笔记内容:
浏览器基础3:CSP与浏览器安全策略

更多推荐

所有评论(0)