-
- Cookie
- 含义及作用
Cookie是网站服务器把少量的文本数据存储到客户端的硬盘或内存,或是从客户端读取数据的一种技术;
当你浏览某个网站时,服务器会向你的电脑发送一个cookie文本文件,它可以记录你的ID、密码等信息,当你发起请求时,带上cookie,网站读取cookie,进而读取你的信息,继续进行相对应的动作,如:已通过验证,直接登录;
Cookie主要作用:标识用户,维持会话.
• Set-Cookie/sessionid:server发送给client的cookie/SessionID
• Cookie:client发送给server证明用户状态的信息(头:值成对出现)
-
- Cookie 格式
• Set-Cookie: HTTP响应头,Web服务器通过此Hπp头向客户端发送Cookie;
• narne=value:这是每一个Cookie均必须有的部分。用户可以通过name取得Cookie中存放的值(Value)。在字符串“name=value”中,不含分号、逗号和空格等字符:
• expires=date: Expires确定了Cookie的有效终止日期,该属性值date必须以特定的格式来书写“星期几,DD一岛位,1-YYHH:MM:SSGMT”,其中,GMT表示这是格林尼泊时间。反之,若不以这样的格式来书写,系统将无法识别。该变量可省,如果缺省,则 Cookie的属性值不会保存在用户的硬盘中,而仅仅保存在内存中,Cookie将随浏览器的 关闭而自动消失;
• domain=domain-name: Domain变量确定了哪些Internet域中的Web服务器可读取浏览器存储的Cookie,即只有来自这个域的页面才可以使用Cookie中的信息。这项设置是可选的,如果缺省,值为该Web服务器的域名;
• path=path : Path属性定义了Web服务器上哪些路径下的页面可获取服务器发送的 Cookie。如果Path属性的值为“/”,则Web}m务器上所有的WWW资源均可读取该Cookie。 同样,该项设置是可边的,如果缺省,则Path的属性值为Web服务器传给浏览器的资源路径名。借助对domain和path两个变量的设置,即可有效地控制Cookie文件被访问的范围。
路径与域一起构成cookie的作用范围。
• Secure:在Cookie中标记该变量,表明只有当浏览器和WebServer之间的通信协议为加密认证协议时,浏览器才向服务器提交相应的Cookie。当前这种协议只有一种,即为HTTPS;
• HttpOnly:禁止JavaScript读取。
每个 Cookie 文件都是一个TXT 文件, 都以 “ 用户名@网站 URL ” 来命名;
-
- Cookie传输
通过http的request头,浏览器也不是发送它所接收到的所有Cookie,它会检查当前要请求的域名以及目录, 只要这二项目与Cookie对应的Domain和Path匹配,才会发送。对于Domain则是按照尾部匹配的原则进行的。发送的内容只有name:value,其他的属性是不发送的。
-
- Cookie种类
会话cookie:
未设置过期时间,当关闭浏览器窗口,cookie就消失。会话cookie一般保存在内存里。
硬盘cookie:
若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。
存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式。
Cookie它也是有限制的,大多数浏览器支持最大的为4096B的cookie
-
- 伪造cookie
伪造的时候需要主意,直接copy cookie文件到 cookie目录,浏览器是不认的,他有一个index.dat文件,存储了 cookie文件的建立时间,以及是否有修改,所以你必须先要有该网站的 cookie文件,并且要从保证时间上骗过浏览器,
-
- Session
- 机制
Session 是存放在服务器端的,
当浏览器 第一次发送请求时,服务器自动生成了一个Session和一个Session ID用来唯一标识这个Session,并将其通过响应发送到浏览器。
当浏览器第二次发送请求,会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的Session。
一般情况下,服务器会在一定时间内(默认30分钟)保存这个 Session,过了时间限制,就会销毁这个Session。在销毁之前,程序员可以将用户的一些数据以Key和Value的形式暂时存放在这个 Session中。
将session序列化后存入数据库中,虽然是没了时间的限制,但是随着时间的增加,这个数据库会变庞大。
-
- Session威胁
- sessionID 生成算法使用私有算法,或算法过弱,容易sequencer寻找规律
- 注销后改sessionID仍然 存活
- sessionID长期不变(针对一个浏览器);
-
- session和cookie对比
cookie数据保存在客户端,session数据保存在服务器端。
SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。