Cookie安全概述

Cookie工作原理[1]:

1,服务器端发送给浏览器端一个含有 “Set-Cookie” 字段的HTTP头。

2,浏览器端接收到 Set-Cookie 指令时,将Cookie的名称与值存储在浏览器的Cookie存放区,并记录该Cookie的 网域(例如: google.com)、路径、失效时间、安全标志。

3,当浏览器发送HTTP请求时,首先查找浏览器Cookie存放区内有没有 该网域、该路径、尚未失效和是否为安全连接的Cookie,如果有的话,就会包含在HTTP请求header的“Cookie”中。

注意,假如一个Web页面包含20张图片、3个CSS、2个JS,同一个Cookie就会发送25次到服务器端。

Cookie特性[2]:

1,Cookie个数受限,IE6每个域名最多20个,IE7之后版本最多50个。Firefox 50,Safari和Chorme没有硬性规定。

2,Cookie大小受限,一般将Cookie长度限制在4095字节(byte)以内。

3,Cookie的名称和值在传送时必须是经过URL编码的。

 接下来要讲的终于要切入正题了,就是关于Cookie安全的[3]。

Cookie攻击的两种手段:

1,Cookie欺骗

  通过盗取、修改、伪造Cookie的内容来得到相应权限或者进行相应权限的操作。

2,Cookie注入

  利用Cookie进行数据库SQL注入,很多人注意过滤通过Get和Post方式获取的参数,但是却疏于过滤从Cookie获取的参数,这点是要引起注意的。

使用Cookie保存的数据

一般不要用Cookie保存用户的个人信息,比如密码、邮箱等,但是如果想在用户链接到网站的时候,验证用户是否是上次登录的那个用户,可以用户每次登录成功后,将一个随机密码发送到浏览器端保存(当然在服务器端数据库也要保存该字段,假如字段名为CookiePassword,注意与用户登录密码不同),当用户再次登录时,首先验证用户发来的密码与CookiePassword字段(不是用户密码)中保存的是否一致,相同即可认为是上次正常登录的用户。

正题好短,囧 -_-

参考文献:

[1]http://blog.miniasp.com/post/2008/02/23/Explain-HTTP-Cookie-in-Detail.aspx

[2]JavaScript高级程序设计[M],Nicholas C. Zakas

[3]黑客Web脚本攻击与技术防御核心剖析[M],郝永清

 

 

posted @ 2011-11-18 22:32  realwall  阅读(410)  评论(0编辑  收藏  举报