cookie和存储中的PHP会话id

cookie和存储中的PHP会话id,php,session,encryption,Php,Session,Encryption,我读过很多关于加密PHP会话数据的评论,以防它存储在共享服务器上多个帐户上可用的临时目录中。但是,即使数据已加密,session_start仍会生成包含session_id的文件名。例如 sess_uivrkk2c5ksnv2hnt5rc8tvgi5 ,其中uivrkk2c5ksnv2hnt5rc8tvgi5与我在浏览器收到的cookie中找到的会话id相同 这个问题通常是如何解决的/有人能给我举个例子吗?我发现的所有简单示例都只是对数据进行加密,而不是更改文件名 为了看看会发生什么,我制作了

我读过很多关于加密PHP会话数据的评论,以防它存储在共享服务器上多个帐户上可用的临时目录中。但是,即使数据已加密,session_start仍会生成包含session_id的文件名。例如

sess_uivrkk2c5ksnv2hnt5rc8tvgi5
,其中uivrkk2c5ksnv2hnt5rc8tvgi5与我在浏览器收到的cookie中找到的会话id相同

这个问题通常是如何解决的/有人能给我举个例子吗?我发现的所有简单示例都只是对数据进行加密,而不是更改文件名

为了看看会发生什么,我制作了一个SessionHandler包装器,在将$session_id变量传递给其父函数之前,它会对该变量进行MD5哈希处理,但这不起作用。相反,我最终得到了两个文件:一个是空白文件,名称中包含session\u id,另一个是完整文件,名称中包含MD5'ed session\u id。此外,还存在关闭不接受session\u id作为参数的问题,因此我无法将其传递给其父级


编辑:我正在学习php会话,这不适用于实时商业网站等。

是的,在某些情况下,例如,配置非常不完善的服务器-尽管不幸的是,这些会话存在于共享服务器上,您的会话数据可能会被其他人读取。试图通过更改会话文件的名称来隐藏它们并没有什么用处——这被称为通过模糊性来实现安全性。用谷歌搜索这个短语——它通常被描述为一种矛盾修饰法

如果您的问题是如何防止其他客户在配置不正确的服务器上访问您的会话数据,那么按优先级排序的明智选择是:

交换机服务提供商 使用自定义会话处理程序将数据存储在安全的地方,例如数据库。web上有很多示例-质量各不相同 使用自定义会话处理程序加密数据并使用文件存储。同样,您不需要自己编写代码,只需仔细检查任何候选代码即可
如果您想知道您的提供者是否是罪魁祸首,只需看看文件的价值。您是否可以访问根文件系统?编写一个脚本,尝试从主目录外读取。如果你不能,那么提供商可能已经设置了一个open_basedir限制,这是可以绕过的-谷歌会再次告诉你怎么做。

对不起,我应该在帖子中提到,我这样做是为了学习。我知道如果我遇到这个问题,我会想切换服务提供商&理想情况下使用一个好的会话处理库/经过良好测试的代码。为了澄清,我并没有试图通过更改会话文件的名称来隐藏它们。我试图从会话文件名中删除session_id变量。我看过几篇关于加密会话数据的帖子,但是如果你有会话id,你仍然可以完全访问用户的帐户。嗯?如果从文件名中删除会话id,那么如何再次找到它?这是如何阻止人们读取文件的?我试着做了一个单向散列。因此,有人访问网站上的某个页面时,会收到一个包含会话id的cookie。cookie中的$session\u id通过哈希函数传递,以获取文件名中使用的新数字/字符串。问题是,我似乎无法使用SessionHandler包装器使其正常工作。。。但我不知道这是否是解决这个问题的正确方法,这就是我在这里发布的原因。对文件中的数据进行加密是一个单独的问题,我发现了一些关于如何进行加密的示例。如果您想知道为什么您的代码没有达到预期效果,请将其作为一个新问题发布