1

我有一个 Cakephp 2+ 站点,它需要某些操作来要求 SSL 连接(即登录、密码重置等),但我不要求整个站点是安全的。在实现这一点时,我发现在 SSL 和非 SSL 页面之间移动时没有保存会话。我在堆栈https://stackoverflow.com/a/12068099/1353839上发现了这个问题,它为我解决了这个问题,但我想知道代价是什么。

上述问题的答案需要在 lib/Cake/Model/Datasource/ 中注释掉一行,如下所示:

if (!isset($sessionConfig['ini']['session.cookie_secure']) && env('HTTPS')){
   // $sessionConfig['ini']['session.cookie_secure'] = 1; // <-- Commented Out
}

这样做有什么安全后果吗?另外,有没有办法在不影响蛋糕核心文件的情况下做到这一点,因为这通常是不受欢迎的?

提前致谢。

4

3 回答 3

5

您将通过 SSL 对用户进行身份验证,以便MITM无法拦截身份验证,但之后您想让会话 cookie 通过纯文本 HTTP 发送,以便 MITM 有机会将其提取并为自己使用?

鉴于此,使用 SSL 有什么意义呢?

(是的,我知道您的会话 cookie 已过期,因此获取其中一个不如获取实际凭据好,但这在安全方面听起来仍然是一个糟糕的主意。)

于 2012-10-19T19:36:14.070 回答
5

首先,修改核心文件是个坏主意,您应该在配置中设置“session.cookie_secure” 。

会话的目的是将关键信息存储在服务器上,并通过会话密钥将该信息与客户端相关联。会话密钥通常存储在 cookie 中,并随每个请求一起发送到服务器。使用安全 cookie 可防止会话密钥被传输到非 SSL 页面;这就是您看不到会话数据的原因。

关闭安全 cookie 允许将会话密钥发送到非 SSL 页面,但是,它以纯文本形式发送,因此您很容易受到会话劫持的影响。根据您的工作,这可能是也可能不是什么大问题。无论如何,通过使用 SSL 进行登录、密码重置等...您将保护用户实际输入的信息(即用户名、密码等...)。

于 2012-10-19T22:11:05.900 回答
1

不要修改核心文件。您可以在 app/Config/core.php 中指定所需的配置。阅读会话配置语句上方的注释,其中提到了如何指定所需的 ini 设置。

于 2012-10-19T21:05:04.763 回答