我有一个Cakephp 2 网站,需要某些操作以需要SSL连接(即登录,密码重置等),但是我不需要整个网站是安全的。在实施此过程时,我发现在SSL和非SSL页面之间移动时,会话没有得到保存。我在堆栈https://stackoverflow.com/a/12068099/1353839上找到了这个问题,这为我解决了问题,但我想知道要花多少钱。
上述问题中的答案需要在Lib/Cake/Model/DataSource/DataSource/中评论一行,如下所示:
if (!isset($sessionConfig['ini']['session.cookie_secure']) && env('HTTPS')){
// $sessionConfig['ini']['session.cookie_secure'] = 1; // <-- Commented Out
}
这样做有任何安全后果吗?另外,是否有一种方法可以在不影响Cake Core文件的情况下进行操作?
通常会皱眉?预先感谢。
首先,修改核心文件是一个坏主意,您应该在配置中设置'session.cookie_secure'。
会话的目的是将关键信息存储在服务器上,并通过会话密钥将其与客户端相关联。会话密钥通常存储在cookie中,并随着每个请求发送到服务器。使用安全cookie防止会话键传输到非SSL页面;这就是为什么您看不到会话数据的原因。
关闭安全cookie允许将会话键发送到非SSL页面,但是,它以纯文本发送,因此您将易于会话劫持。根据您的工作,这可能会或可能没什么大不了的。无论如何,通过使用SSL进行登录,密码重置等...您将保护用户实际输入的信息(即用户名,密码等...)。
您将通过SSL对用户进行身份验证,以使MITM无法拦截身份验证,但是之后您想让会话cookie通过明文http发送,以便MITM有机会可以机会拿起并自己使用它?
鉴于这一点,使用SSL的意义是什么?
(是的,我知道您的会话cookie到期,所以要获得其中之一,它不如获得实际的凭据,但这听起来仍然像是一个可怕的想法。)
不要修改核心文件。您可以在应用程序/config/core.php中指定所需的配置。阅读会话配置语句上方的评论,并提到如何指定所需的INI设置。