2016-01-02 36 views
1

我很想知道会话中的密钥和值如何加密 - 它使用哪种标准。会话是可解密的吗?如果不是,我们可以轻松从中提取值吗?PHP:在会话中如何保护密钥和值对

PHP技能:中级。

例如:

设置会话变量:

$_SESSION["greetings"] = "happyNewYear"; 
$_SESSION["year"] = "2016"; 

提取:

print_r($_SESSION); 

我想知道什么是设置变量并保存之间发生的事情。

+1

究竟是什么让你觉得它们完全被加密?据我所知,默认情况下,它们以一种普通的(以某种方式序列化的)格式存储在服务器上的一个文件中。 – ArSeN

+0

它们被保存在服务器上的明文。 –

回答

2

PHP将会话数据存储在服务器上的文件中(可以自定义存储方法,但这是默认设置)。每个会话都将其数据存储在以会话ID命名的另一个文件中。会话ID通常是随机生成的字符串。该文件的内容是serialize($_SESSION)的结果。

会话ID然后作为cookie发送给客户端,名为PHPSESSID。客户端发回此cookie时,PHP会将相应文件中的值加载到$_SESSION

数据未加密,其安全性基本上取决于无法猜测长会话ID cookie。请参阅PHP Session Fixation/Hijacking了解更多有关此攻击的讨论。

0

默认情况下,$ _SESSION将serialized保存在服务器文件系统上的纯文本文件中。

+0

你能否提供关于它如何在存储在客户端的cookie中加密的信息? – Puneet

+0

Cookie未加密。查看我的答案,了解cookie如何与会话数据相关。 – Barmar