这是我想知道的一个例子。
<?php
session_start();
$_SESSION['name'] = "mike";
$_SESSION['lname'] = "donwell";
$_SESSION['address'] = "111 north welding ave.";
print $_SESSION['name'] . "<br/>";
print $_SESSION['lname']. "<br/>";
print $_SESSION['address']. "<br/>";
?>
当我在浏览器上运行并查看cookie时,我看到一个PHPSESSID cookie,其值始终是随机的。 它用于生成显示的值的加密方法。
出于安全考虑,我自己能够查看我网站上的会话及其价值吗?因为它总是加密?
感谢
答案 0 :(得分:5)
默认情况下,会话未加密。数据只是以序列化形式存储在服务器硬盘上的临时目录中。这可以通过redefining session handling functions进行更改。
例如,您可以使用数据库存储会话数据,并加密它。
您看到的PHPSESSID值只是分配给当前浏览器会话的会话文件的MD5标识符。
答案 1 :(得分:0)
您的会话数据未加密。这个不祥的字符串只是随机散列的东西,可能是MD5哈希(参见MD5() - 函数),但它没有任何意义,也没有理由试图解密它。并且会话是私有的,所以没有人可以看到它,除了访问者和网站管理员。但是,如果有人通过网络嗅探或PC上的特洛伊木马进行会话密钥,那么他可以给你的安装程序设置进行身份验证......这就是所谓的会话劫持。
最佳
拉斐尔
答案 2 :(得分:0)
原始会话数据不公开。默认情况下,php会将会话数据写入doc root / htdocs之外的路径。会话保存路径可以在php.ini(session.save_path)中设置。用户只能访问与其会话ID相关联的会话数据(默认情况下,它存储在cookie中)。
我不相信php会在保存之前加密会话数据(它只是序列化的)。 IMO,您应该使用自定义会话处理程序。您可以更好地控制数据的存储位置,编码方式和访问方式(例如,通过cookie中的唯一ID)。许多框架包括一个自定义会话处理程序(Kohana 3有一个很好的;)。)。
使用自定义会话处理程序的文档:http://www.php.net/manual/en/function.session-set-save-handler.php
编辑:根据Mchl的评论更新