关于Cookies和Session的有效时间分析

今天突然有一个疑问,Cookies的有效期和Session的有效期通过php是在服务端设置的,如果过期了,客户端访问是不是就不生效了,还是服务端在内存中会销毁Session,客户端取消了Cookies字段呢?如果加上带cookies访问会有什么效果呢?用php实现测试了下,代码如下:
Cookies有效期设置:

<?php
//测试这个cookies有效期会根据客户端访问的时间,决定是不是有这个cookies字段
//这种方式不靠谱,记录cookies字段发包就可以绕过cookies有效期限制了。
setcookie("user", "ly55521", time()+6);
?>
<?
//第一个实例 cookies有效期演示
echo "user----------".$_COOKIE["user"]."----------<br>";
var_dump($_COOKIE);
?>

通过上面打印cookies,可以发现,在客户端设定了cookies,当cookies的字段过期后,在客户端就没有这个cookies字段了,如果加上这个cookies字段去访问,依然可以得到原来的结果,这里是单纯的cookies,如果是单纯的cookies验证肯定不靠谱,可以做欺骗。
Session有效期设置:

<?
session_start();
$id = "ly55521";
$_SESSION['id'] = $id;
setcookie("PHPSESSID_FUNCTION",$_SESSION['id'], time()+6);
?>
<?
echo $_SESSION["id"]."---------".$_SESSION['pw'];
?>

理论上学习的Session是服务端的,经过实际分析,Session可以放在内存中,也可以自定义放到数据库或者文件中,客户端有一个PHPSESSION或者自定义一个cookies字段保持cookies与session的通讯,cookies放的PHPSESSION是服务端的session做效验的,通过抓包分析,SESSION注销时,客户端Cookies中的PHPSESSION标识将过时,因为内存中没有了,设定了有效期也是一样的,如果没有设置会一直生效貌似,或者默认有个有效时间,具体默认多久有效时间就没研究了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注