cookie的生命周期,cookie何时创建,何时销毁

Cookie概念

    在浏览某些网站时,这些网站会把一些数据存在客户端,用于使用网站等跟踪用户,实现用户自定义功能

Cookie会在客户端存活多久呢?这就是Cookie的生命了。默认情况下,Cookie只在浏览器的内存中存活,也就是说,如果不设置 过期时间,则表示这个 Cookie生命周期为浏览器会话期间,当你关闭浏览器后,Cookie就会消失!

可以使用Cookie#setMaxAge(int expiry)来设置Cookie的存活时间。参数expiry表示Cookie存活的秒数。

    cookie.setMaxAge(60*60):表示cookie对象可存活1小时。就算关闭浏览器,就算重启客户端电脑,cookie也会存活1小时。因为当maxAge大于0时,浏览器不仅会把cookie保存在浏览器内存中,还会把cookie保存到硬盘上。

    cookie.setMaxAge(-1)cookiemaxAge属性的默认值就是-1(其实只要是负数都是一个意思),表示只在浏览器内存中存活。一旦关闭浏览器窗口,那么cookie就会消失。

cookie.setMaxAge(0)cookie被作废!表示cookie即不在内存中存活,也不在硬盘上存活,这样的cookie设置只有一个目的,那就是覆盖客户端原来的这个cookie,使其作废。

存储在硬盘上的Cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的Cookie,不同的浏览器有不同的处理方式。

原理:

如果浏览器使用的是 cookie,那么所有的数据都保存在浏览器端,

比如你登录以后,服务器设置了 cookie用户名(username),那么,当你再次请求服务器的时候浏览器会将username一块发送给服务器,这些变量有一定的特殊标记。

服务器会解释为 cookie变量。

所以只要不关闭浏览器,那么 cookie变量便一直是有效的,所以能够保证长时间不掉线。

如果你能够截获某个用户的 cookie变量,然后伪造一个数据包发送过去,那么服务器还是认为你是合法的。所以,使用 cookie被攻击的可能性比较大。

如果设置了的有效时间,那么它会将 cookie保存在客户端的硬盘上,下次再访问该网站的时候,浏览器先检查有没有 cookie,如果有的话,就读取该 cookie,然后发送给服务器。

如果你在机器上面保存了某个论坛 cookie,有效期是一年,如果有人入侵你的机器,将你的 cookie拷走,然后放在他的浏览器的目录下面,那么他登录该网站的时候就是用你的的身份登录的。

所以 cookie是可以伪造的。

当然,伪造的时候需要主意,直接copy cookie文件到 cookie目录,浏览器是不认的

原文地址:https://www.cnblogs.com/KingAndPig/p/13963652.html