在 Ubuntu 12.04、Apache2、PHP5 服务器上,安装了 suhosin 扩展。(phpinfo页面)
这是通过自动更新提供最新安全更新的专用服务器。
我创建了以下测试脚本(未设置 suhosin conf的测试脚本)
session_start();
$error = 0;
ob_implicit_flush(true);
if ($_GET['is'] == 'set'){
session_set_cookie_params ( '3600','/','.theparentingplace.com',false, false );
error_log( "Old 'suhosin.session.encrypt': " . print_r( ini_set('suhosin.session.encrypt', 0), true) );
error_log( "Old 'suhosin.session.cryptdocroot': " . print_r( ini_set('suhosin.session.cryptdocroot', 0), true) );
error_log( "Old 'suhosin.cookie.cryptdocroot.': " . print_r( ini_set('suhosin.cookie.cryptdocroot', 0), true) );
}
if (empty($_SERVER['HTTPS']) && !$error){
$_SESSION['test'] = 'abc';
header('Location: https://'.$_SERVER['SERVER_NAME']
.'/http_https_session_test.php');
}else{
if ($_SESSION['test'] == 'abc'){
print "Success." . $_SESSION['test'];
}else{
print "Fail.". print_r($_SESSION['test'],1);
}
}
错误日志显示:
[Sat Oct 26 20:00:23 2013] [error] [client 103.29.31.35] Old 'suhosin.session.encrypt':
[Sat Oct 26 20:00:23 2013] [error] [client 103.29.31.35] Old 'suhosin.session.cryptdocroot':
[Sat Oct 26 20:00:23 2013] [error] [client 103.29.31.35] Old 'suhosin.cookie.cryptdocroot.'
其他 SO 帖子建议检查 session.cookie_secure 和 session.http_only 参数。两者都在此服务器上关闭。此外,我尝试实现关闭特定的 suhosin 设置,或者使用 suhosin.simulation=On 完全关闭 suhosin 我在 php.ini 中都试过了
此脚本返回失败。如果脚本使用 is=set 参数运行,则无法设置参数(测试脚本 2)
在另一台专用服务器上,测试脚本工作正常,即。https url 获取会话变量,但是此服务器是 Ubuntu 10.04。
知道下一步该怎么做吗?