cookie和sessiond的主要区别

(1)、保存位置稍有区别

cookie数据存放在客户的浏览器上,服务器端不用保存。session数据放在服务器上,本地内存也有一份。

(2)、安全性不同

cookie安全性不如session。因为普通cookie保存在本地硬盘上,黑客可以伪造url等方式发起xss攻击,获取本地硬盘保存状态的cookie,进而窃取用户的敏感信息。

session则不同,只有在用户登录此网站时发起xss攻击才能获取session信息,关闭浏览器之后,session即被销毁,安全性较cookie要好

(3).跨域支持上的不同

Cookie支持跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等。而Session则不会支持跨域名访问。Session仅在他所在的域名内有效。

(4).服务器压力的不同

Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。考虑到减轻服务器性能方面,应当使用COOKIE。

(5). 存取方式的不同

Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比拟艰难的。

而Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。

(6).   cookie的保存内容大小有限制,单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。

(7):session的运行依赖session id ,而session id是存在cookie中的,也就是说如果浏览器禁用了cookie,同时session也会失效,(但是可以通过其他方式实现session ,比如在url中传递session id)

(8):session 可以放在文件,数据库,或者是内存中,默认是存储在文件中,都可以

(9):用户验证一般都会用session

  $_COOKIE    浏览器cookie的操作

          设置cookie:setcookie(name, value, expire, path, domain);

          获取cookie:$_COOKIE["user"];

          删除cookie:setcookie("user", "", time()-3600);//设置过期时间

  $_SESSION  服务端session的操作

          使用session前一定要session_start()启动session

          储存session:$_SESSION["name"]="King";//数组操作

          销毁session:unset($_SESSION["name"]);//销毁一个

          session_destroy()和unset($_SESSION);//销毁所有的session

Cookie概念

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

cookie伪造

你的第三方应用端的cookie被恶意的用户截取到,然后向服务器端发送,并且通过验证,他们就会冒充用户进行登录,这就是cookie伪造

防cookie伪造:

现在更通用的做法是使用session来标识用户,也就是说我们为每个第三方应用端生成一个唯一的id,然后在服务端存储这个id所对应的状态。

这样cookie里面仅仅保存了这个id,而没有任何其他的东西。而且这个id往往还有个特性,它是随机生成,且每次登陆都会产生一个新的。这样就更降低了信息泄漏的风险。

Session的概念

Session 是存放在服务器端的类似于HashTable结构来存放用户数据;

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

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

客户端禁掉 cookie后session还能用吗

Cookie和session都是用来实现会话机制的,由于http协议是无状态的,所以要想跟踪一个用户在同一个网站之间不同页面的状态,需要有这么一个机制----会话机制。

Cookie:将会话信息的保存到浏览器端。Session:将会话信息保存到服务器端。

session默认情况下是基于cookie的,对于session来说,每生成一个sessionid,都会将其发送到浏览器端,让后将其保存到cookie当中。

一般Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session了。

但是可以通过其他方式来存储sessionID,eg:redis或文件里。

在存储session的文件中,生成sessionID,通过get传参的方式将sessionID传到要实现session共享的页面,读取sessionID,从而从session中获取数据。

session默认的生存时间

php中session过期时间设置   

1、修改php配置文件中的session.gc_maxlifetime

2、<?php
    session_start();
    // 保存一天
    $lifeTime = 24 * 3600;
    setcookie(session_name(), session_id(), time() + $lifeTime, "/");
?>

3、其实 Session 还提供了一个函数 session_set_cookie_params(); 来设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用:
<?php
    // 保存一天
    $lifeTime = 24 * 3600;
    session_set_cookie_params($lifeTime);
    session_start();
    $_SESSION["admin"] = true;
?>

session_id 和 服务器的session文件的关系

Session_id 和session同时生成,并且session文件是以session_id所命名

php在储存session以什么形式存在

PHP为session的存储提供了三种方式: 文件/ 内存/ 自定义存储,默认是使用文件存储.在访问量大的网站上采用这种方式就不大合适,因为这样会导致大量的输入输出的冗余.我们可以在php.ini更改配置文件或者php脚本中通过相应的函数来设置session文件的存储类型来改变session文件的存储形式

               比你优秀的人不可怕,可怕的是比你优秀的人比你更努力

最新文章

  1. aar引用 no executable code found问题
  2. 如何删除git远程分支
  3. 总是你 2008-3 (献给L之一)
  4. [转]SET NOCOUNT ON
  5. php:检测用户当前浏览器是否为IE浏览器
  6. Python新手需要掌握的知识点
  7. 爬虫_url去重策略
  8. Centos7配置MongoDB以及端口修改
  9. DVWA 黑客攻防演练(十)反射型 XSS 攻击 Reflected Cross Site Scripting
  10. react native第一天--------KnightRider
  11. asp .net core Get raw request.
  12. 【转】Git 代码行统计命令集
  13. MySQL数据库图文安装详解及相关问题
  14. 贝云cms内容管理系统(thinkphp5.0开源cms管理系统)
  15. Java中的Random()函数 【转载】
  16. PCL—低层次视觉—关键点检测(Harris)
  17. 2018.06.29 NOIP模拟 排列(线段树)
  18. 关于NaN
  19. caffe Python API 之LRN
  20. maven与gradle的对比

热门文章

  1. Linux:目录的查找
  2. Linux文件基本命令
  3. JAVA学习方法之——费曼学习法
  4. golang数据结构和算法之BinarySearch二分查找法
  5. word最近文档清除
  6. 使用Appium进行微信公众号自动化测试
  7. O2O 线下业务 和 线上业务,在特征工程上的差异
  8. VMware虚拟机安装Centos7后设置静态ip
  9. docker Dockerfile实战
  10. 理解CMS GC日志