php加密的ssl会话数据

时间:2010-10-19 15:05:28

标签: php apache session ssl encryption

我有两台服务器在运行, 一个用于动态内容(nginx,php) 另一个用于登录(apache2,php)

我使用memcache来分享会话信息

我升级了服务器软件,从那时起apache中的会话数据被加密

阿帕奇:
会话::写( “会话/ s53mqdhghmlrvnvjt05novt4m2”, “加密数据”,0,1440)

nginx的:
会话::写( “会话/ s53mqdhghmlrvnvjt05novt4m2”, “测试| I:1;”,0,1440)

两个服务器上的

会话ID是相同的,会话cookie仍然通过sessionId,所以仍然可以像它一样工作

两个服务器都使用完全相同的php.ini

我查看了ssl conf但我找不到任何可以将会话数据设置为加密的内容

任何人都知道在哪里可以阻止会话数据在apache / mod_ssl上加密

修改
好吧,我发现了一个有效的解决方案,但我仍然发现了问题的根源 我知道会话数据必须让php进程由mod_ssl加密 在脚本结束后,php通过清理操作调用会话保存处理程序 但是文档中没有记录这种行为。

目前,sollution不会在session :: write中保存php提供的数据,而是使用session_encode()再次生成会话哈希并保存

对于那些阅读本文的人,我知道如何以及为什么我真的想知道关闭加密数据的指令。

2 个答案:

答案 0 :(得分:3)

如果你加载了suhosin模块,就像我一样,它可能是问题的根源。您可以通过在suhosin ini文件中将suhosin.session.encrypt设置为off来完全禁用它或关闭会话加密。

答案 1 :(得分:0)

会话数据存储在服务器上,而不是存储在会话cookie中。如果您阅读了cookie,您将看到它只是一个包含ID的字符串。默认情况下(简单地说),PHP通过序列化$ _SESSION数组并将其写入文件来存储会话数据。我不确定您要做的是在不同环境中共享会话信息。由于您提到了memcached,只需重新编写会话处理函数来读取和写入memcached。由于您将控制数据的存储方式,因此您可以存储或不存储数据。 以下是关于会议handeling功能的参考:

http://us3.php.net/manual/en/book.session.php