安全测试学习笔记一(Cookie&Session)(摘要)
2015-09-21 08:51
260 查看
一,Session:含义:有始有终的一系列动作\消息
1, 隐含了“面向连接”和“保持状态”两种含义
2, 一种用来在客户端与服务器之间保持状态的解决方案
3, 也指这种解决方案的存储结构“把××保存在session里”
二,http协议本来是无状态的,所以引进了cookie和session机制来保持连接状态
cookie与session机制之间的区别与联系:
cookie机制采用的是在客户端保持状态的方法
session机制采用的是在服务器端保持状态的方案,由于在服务器端保 持状态的同时必须要求客户端提供一个标识,
三,关于cookie机制
Cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的,浏览器会检查
所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的http请求头上发送给服务器。
存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而保存在内存里的cookie,不同的浏览器有不同的处理方式,对于IE,在一个打开的窗口上按CTRL+N(从文件菜单)打开的窗口可以与原窗口共享cookie,而使用[u][b]其他[/b][/u]方式新开的IE进程则不能共享已经打开的窗口的内存cookie。
Cookie的内容包括:名字,值,过期时间,路径和域
四,关于session的机制
当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个请求是否含了一个session标识(session
id),如果有,则说明以前为该客户创建了一个session,服务器就按照session id把这个session检索出来用,一般一个cookie的名字就是类似于session
ID,如果cookie被禁止的时候(cookie可以被人为的禁止),经常使用重写URL的方式,把session ID附加在URL路径后面,为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session
id。
人们以为:“把浏览器关闭了,session就小时了”其实不对,除非程序通知服务器删除一个session,否则服务器会一直保留,而程序一般都是在用户作log off的时候发个指令去删除session。人们之所以会产生这种错觉,是因为大部分session会采用cookie来保存session,而关闭浏览器后这个session就消失了,如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的http请求头,把原来的session
id发送给服务器,则再次打开浏览器,其实是可以再次找到之前的session id的。所以设置失效时间可以起到一定的保护作用。
五,关于session的一些问题
1, session何时被创建:不是在客户端访问时就被创建,而是在服务器端调用httpservletRequest.getSession(true)时才被创建。
2, session何时被删除: A,程序调用httpSession.invalidate(),B距离上一次收到客户端发送的session
id时间间隔超过了session的超时设置C, 服务器进程被停止(非持久session)
3, 如何做到关闭浏览器同时关闭session: 严格说做不到,可以让所有的客户端页面使用window.onclose来监视浏览器的关闭东西,然后向服务器发送一个请求来删除session,但是对于浏览器崩溃或者强行杀死进程时仍然无能为力。
1, 隐含了“面向连接”和“保持状态”两种含义
2, 一种用来在客户端与服务器之间保持状态的解决方案
3, 也指这种解决方案的存储结构“把××保存在session里”
二,http协议本来是无状态的,所以引进了cookie和session机制来保持连接状态
cookie与session机制之间的区别与联系:
cookie机制采用的是在客户端保持状态的方法
session机制采用的是在服务器端保持状态的方案,由于在服务器端保 持状态的同时必须要求客户端提供一个标识,
三,关于cookie机制
Cookie的使用是由浏览器按照一定的原则在后台自动发送给服务器的,浏览器会检查
所有存储的cookie,如果某个cookie所声明的作用范围大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的http请求头上发送给服务器。
存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而保存在内存里的cookie,不同的浏览器有不同的处理方式,对于IE,在一个打开的窗口上按CTRL+N(从文件菜单)打开的窗口可以与原窗口共享cookie,而使用[u][b]其他[/b][/u]方式新开的IE进程则不能共享已经打开的窗口的内存cookie。
Cookie的内容包括:名字,值,过期时间,路径和域
四,关于session的机制
当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个请求是否含了一个session标识(session
id),如果有,则说明以前为该客户创建了一个session,服务器就按照session id把这个session检索出来用,一般一个cookie的名字就是类似于session
ID,如果cookie被禁止的时候(cookie可以被人为的禁止),经常使用重写URL的方式,把session ID附加在URL路径后面,为了在整个交互过程中始终保持状态,就必须在每个客户端可能请求的路径后面都包含这个session
id。
人们以为:“把浏览器关闭了,session就小时了”其实不对,除非程序通知服务器删除一个session,否则服务器会一直保留,而程序一般都是在用户作log off的时候发个指令去删除session。人们之所以会产生这种错觉,是因为大部分session会采用cookie来保存session,而关闭浏览器后这个session就消失了,如果服务器设置的cookie被保存到硬盘上,或者使用某种手段改写浏览器发出的http请求头,把原来的session
id发送给服务器,则再次打开浏览器,其实是可以再次找到之前的session id的。所以设置失效时间可以起到一定的保护作用。
五,关于session的一些问题
1, session何时被创建:不是在客户端访问时就被创建,而是在服务器端调用httpservletRequest.getSession(true)时才被创建。
2, session何时被删除: A,程序调用httpSession.invalidate(),B距离上一次收到客户端发送的session
id时间间隔超过了session的超时设置C, 服务器进程被停止(非持久session)
3, 如何做到关闭浏览器同时关闭session: 严格说做不到,可以让所有的客户端页面使用window.onclose来监视浏览器的关闭东西,然后向服务器发送一个请求来删除session,但是对于浏览器崩溃或者强行杀死进程时仍然无能为力。
相关文章推荐
- 并发编程之可变状态
- K9000 命令
- WINCE之绘图显示效率对比
- 判断链表是否含有环,若有则找出环的入口节点
- Android SurfaceView实现动画
- 自动化测试【Maven+Eclipse+Selenium+Java环境搭建和测试】
- 一分眷恋,一分虔诚,弥漫了我的天涯。
- 埃奇沃思de盒子
- 测试建模:功能列表(Function List)
- POST和GET区别
- Android自定义View—仿雷达扫描效果
- 常规功能和模块自定义系统 (cfcmms)—008测试试用版(6.0.0)下载及使用
- 同步与异步、阻塞与非阻塞
- 使用功能点估算模型评估软件测试的工作量
- 战略,定一个大的战略
- 【IOS 开发学习总结-OC-11】★objective-c面向对象之——封装和访问控制符
- 花千骨的游戏为啥比电视剧还赚钱?
- Java求素数和最大公约数的简单代码示例
- win8-VS2008-"此任务要求应用程序具有提升的权限"
- K9000 只有加锁,没解锁,导致程序不处理呼叫业务了。