码迷,mamicode.com
首页 > 其他好文 > 详细

cookie和session

时间:2019-01-14 20:14:25      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:time()   之间   工具   命令   用户   应用服务   完全   标识   链接   

cookie机制 

Cookie概念

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

 

    是否设置过期时间:

              如果不设置 过期时间,则表示这个 Cookie生命周期 浏览器会话期间 , 只要关闭浏览器,cookie就消失了.

               这个生命期为浏览会话期的cookie,就是会话Cookie;

 

     存储:    一般保存在 内存,不在硬盘;

             如果设置了过期时间, 浏览器会把cookie保存在硬盘上,关闭再打开浏览器, 这些cookie 依然有效直到 超过的设置过期时间;

 

      存储在硬盘上的Cookie可以在不同的浏览器进程间共享,比如两个IE窗口。

      而对于保存 在内存的Cookie,不同的浏览器有不同的处理方式。


原理:

    如果浏览器使用的是 cookie,那么所有的数据都保存在浏览器端
    比如你登录以后,服务器设置了 cookie用户名(username),那么,当你再次请求服务器的时候,浏览器会将username一块发送给服务器,这些变量有一定的特殊标记。
     务器会解释为 cookie变量。
    所以只要不关闭浏览器,那么 cookie变量便一直是有效的,所以能够保证长时间不掉线。
    如果你能够截获某个用户的 cookie变量,然后伪造一个数据包发送过去,那么服务器还是认为你是合法的。所以,使用 cookie被攻击的可能性比较大。
    如果设置了的有效时间,那么它会将 cookie保存在客户端的硬盘上,下次再访问该网站的时候,浏览器先检查有没有 cookie,如果有的话,就读取该 cookie,然后发送给服务器。
    如果你在机器上面保存了某个论坛 cookie,有效期是一年,如果有人入侵你的机器,将你的 cookie拷走,然后放在他的浏览器的目录下面,那么他登录该网站的时候就是用你的的身份登录的。
    所以 cookie是可以伪造的。
   当然,伪造的时候需要主意,直接copy cookie文件到 cookie目录,浏览器是不认的,
   他有一个index.dat文件,存储了 cookie文件的建立时间,以及是否有修改,所以你必须先要有该网站的 cookie文件,并且要从保证时间上骗过浏览器,
   曾经在学校的vbb论坛上面做过试验,copy别人的 cookie登录,冒用了别人的名义发帖子,完全没有问题。
 

cookie 用法:

      setcookie("user","zy",time()+3600);  设置user为zy,一小时之后失效;
      $_COOKIE[‘user‘];                   取回user值(名字)
      setcookie("user","",time()-3600);   删除cookie,第二个参数为空,第三个时间设置为小于系统的当前时间即可.


     或在浏览器设置

          在使用Cookie时,Cookie自动生成一个文本文件存储在IE浏览器的Cookie临时文件夹中,应用浏览器删除Cookie文件的具体操作步骤为
            >选择IE浏览器中的工具/internet选项命令,打开Internet选项对话框,
            >在常规选项卡中单击删除Cookie按钮,在弹出的对话框中单击确定按钮,即可成功删除全部Cookie文件.

 

 

 

Session的概念

 

   Session 是存放在服务器端的类似于HashTable结构(每一种web开发技术的实现可能不一样,下文直接称之为HashTable)来存放用户数据;

   作用:实现网页之间数据传递,是一个存储在服务器端的对象集合。

   原理:当用户请求一个Asp.net页面时,系统将自动创建一个Session;退出应用程序或关闭服务器时,该Session撤销。系统在创建Session时将为其分配一个长长的字符串标识,以实现对Session进行管理与跟踪。
   

        session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。

 

       保存:

            存储在Server段的内存进程中的,而这个进程相当不稳定,经常会重启,这样重启的话,就会造成Session失效,用户就必须要重新登录,用户体验相当差,比如用户在填写资料,快要结束的时候Session失效,直接跳到登录页面;

 

cookie 和session 的区别:


1、cookie数据存放在客户的浏览器上,session数据放在服务器上.

       简单的说,当你登录一个网站的时候,如果web服务器端使用的是session,那么所有的数据都保存在服务器上面,

客户端每次请求服务器的时候会发送 当前会话的session_id,服务器根据当前session_id判断相应的用户数据标志,以确定用户是否登录,或具有某种权限。

由于数据是存储在服务器 上面,所以你不能伪造,但是如果你能够获取某个登录用户的session_id,用特殊的浏览器伪造该用户的请求也是能够成功的。

session_id是服务 器和客户端链接时候随机分配的,一般来说是不会有重复,但如果有大量的并发请求,也不是没有重复的可能性,我曾经就遇到过一次。

登录某个网站,开始显示的 是自己的信息,等一段时间超时了,一刷新,居然显示了别人的信息。


Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一 SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。


2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session。


3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用COOKIE。


4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。(Session对象没有对存储的数据量的限制,其中可以保存更为复杂的数据类型)

 

  注意:

      session很容易失效,用户体验很差;

      虽然cookie不安全,但是可以加密 ;

      cookie也分为永久 和暂时 存在的;

      浏览器 有禁止cookie功能 ,但一般用户都不会设置;

     一定要设置失效时间,要不然浏览器关闭就消失了;

 

工作原理:

Cookie服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie

 

Session是指从一个浏览器窗口打开到关闭这个期间

客户端禁用或不支持COOKIE时,仍然可以使用Session

cookie和session

标签:time()   之间   工具   命令   用户   应用服务   完全   标识   链接   

原文地址:https://www.cnblogs.com/zhang0807/p/10268491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!