是否可以检索保存在 php 会话中的数据?(安全问题)


Is it possible to retrieve data saved in a php session? (Security issue)

为了尊重用户的隐私,我需要用只有他们自己知道的密钥加密每个用户的信息。服务器和任何可以访问服务器或数据库的人都不应该被信任

因此,我将使用每个用户的密码来加密他/她的安全关键数据。 这就是我需要在会话处于活动状态时存储密码的原因,以便加密和解密他们的信息。

问题是:如果我将密码保存在会话中,对服务器具有完全访问权限的攻击者是否有可能从会话中检索存储的密码?

你的问题没有多大意义。

我需要用只有他们自己知道的密钥加密每个用户的信息。

您正在谈论端到端加密

我需要在会话处于活动状态时存储密码

你知道用户的密码!

您应该决定是否要使用端到端加密(密钥永远不会离开用户的计算机)。

对服务器具有完全访问权限的攻击者是否可以从会话中检索存储的密码?

是的

简短回答:是的,对服务器具有完全访问权限的攻击者可以从临时会话文件中检索密码。

这是一个快速示例,我们将会话文件放在 php 文件旁边,然后读取其内容。

<?php
session_save_path('./');
session_start();
$_SESSION['password'] = 'xc4qh8wzza1xmx6vhf0nfuzluigqxlj';
echo file_get_contents('./sess_' . session_id());
?>

结果是

password|s:31:"xc4qh8wzza1xmx6vhf0nfuzluigqxlj";

如您所见,数据以纯文本形式存储,可以轻松读取。