【CTF部分基础知识二之PHP(十九)】

Cookie与Session

Cookie和Session是两种不同的存储机制,前者是从一个Web页到下一个页面的数据传递方法,存储在客户端;后者是让数据在页面中持续有效的方法,存储在服务器端。可以说,Cookie和Session技术对于Web网站页面间信息传递的安全性起着关键的作用。

Cookie管理

Cookie是在HTTP协议下,服务器或脚本维护客户工作站上信息的一种方式。

什么是Cookie
Cookie是一种在远程浏览器端存储数据并以此来跟踪和识别用户的机制。

Cookie的功能
Web服务器可以通过Cookies包含信息的任意性来筛选并经常性地维护这些信息,以判断在HTTP传输中的状态。Cookie常用于以下3个方面。
☑ 记录访客的某些信息。如可以利用Cookie记录用户访问网页的次数,或者记录访客曾经输入过的信息。另外,某些网站可以使用Cookie自动记录访客上次登录的用户名。
☑ 在页面间传递变量。浏览器并不会保存当前页面上的任何变量信息,当页面被关闭时,页面上的所有变量信息将随之消失。如果用户声明一个变量id=8,要把这个变量传递到另一个页面,可以先把变量id以Cookie形式保存下来,然后在下一页通过读取该Cookie获取变量的值。
☑ 将所查看的Internet页存储在Cookie中,以提高后续浏览的速度。

注意
一般不使用Cookie保存数据集或其他大量数据,且并非所有的浏览器都支持Cookie。另外,数据信息以明文文本的形式保存在客户端计算机中,因此最好不要保存敏感的、未经加密的数据,否则会影响网络的安全性。

创建Cookie
在PHP中通过setcookie()函数创建Cookie。创建Cookie之前必须了解的知识:Cookie是HTTP头标的组成部分,必须在页面其他内容之前发送,即它必须最先输出。因此,在setcookie()函数前输出一个HTML标记或echo语句,甚至一个空行,都会导致程序出错。其语法格式如下:

bool setcookie(string name[, string value[, int expire[, string path[, string domain[, int secure]]]]])

setcookie()函数的参数说明
在这里插入图片描述

读取Cookie

在PHP中可以直接通过超级全局数组$_COOKIE[]来读取浏览器端的Cookie值。

删除Cookie

Cookie被创建后,如果没有设置失效时间,则会在浏览器关闭时被自动删除。当然,也可以自行删除Cookie,方法有两种:一是使用setcookie()函数删除,二是在浏览器中手动删除Cookie。

  1. 使用setcookie()函数删除Cookie
    删除Cookie和创建Cookie类似,也需要使用setcookie()函数。删除Cookie时只需要将setcookie()函数中的第二个参数设置为空值,将第三个参数Cookie的过期时间设置为小于系统当前时间即可。
  2. 在浏览器中手动删除Cookie
    在使用Cookie时,Cookie会存储在浏览器中的指定位置。以Google Chrome浏览器为例,在浏览器中删除Cookie的具体操作步骤如下。
    (1)启动Google Chrome浏览器,在地址栏中输入chrome://settings,按Enter键,打开Google Chrome浏览器的设置页面。
    (2)单击浏览器设置页面左侧的“隐私和安全”选项,在右侧找到“清除浏览数据”选项。
    Cookie的生命周期
    如果Cookie未设定时间,就表示它的生命周期为浏览器会话期间,只要关闭浏览器,Cookie就会自动消失。这种Cookie被称为会话Cookie,一般不保存在硬盘上,而是保存在内存中。
    如果设置了过期时间,那么浏览器会把Cookie保存到硬盘中,再次打开浏览器时依然有效,直到它的有效期超时。

Session管理

对比Cookie,Session文件中保存的数据在PHP脚本中是以变量的形式创建的,创建的Session变量在生命周期(20分钟)中可以被跨页的请求所引用。另外,Session是存储在服务器端的会话,相对安全,并且不像Cookie那样有存储长度的限制。

了解Session

Session译为“会话”,其本义是指有始有终的一系列动作/消息,如打电话时从拿起电话拨号到挂断电话这一系列过程可以称为一个Session。
在计算机专业术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统所经过的时间。因此,Session实际上是一个特定的时间概念。

  1. Session工作原理
    当启动一个Session会话时,会生成一个随机且唯一的session_id,也就是Session的文件名,此时session_id存储在服务器的内存中,当关闭页面时,此id会自动注销,重新登录此页面,会再次生成一个随机且唯一的id。
  2. Session的功能
    Session在Web技术中非常重要。由于网页是一种无状态的连接程序,因此无法得知用户的浏览状态。通过Session可记录用户的有关信息,以供用户再次以此身份对Web服务器提交要求时做确认。例如,在电子商务网站中,通过Session记录用户登录的信息,以及用户所购买的商品,如果没有Session,用户每进入一个页面都需要登录一次用户名和密码。
    另外,Session会话适用于存储信息量比较少的情况。如果用户需要存储的信息量相对较少,并且存储内容不需要长期存储,那么使用Session把信息存储到服务器端比较合适。

创建会话

创建一个会话需要通过以下步骤:启动会话→注册会话→使用会话→删除会话。

  1. 启动会话
    在PHP中有以下两种方法可以启动会话。
    ☑ 通过session_start()函数启动会话。其语法格式如下
  • 30
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liana-Fany

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值