【问题标题】:Would switching on session.cookie_secure log out my users?打开 session.cookie_secure 会注销我的用户吗?
【发布时间】:2015-12-08 03:00:01
【问题描述】:

我正在运行一个 https 站点,并希望在 php.ini 中打开这些以提高安全性:

session.cookie_httponly = 1
session.cookie_secure = 1

我可以在网络上找到很多关于此的信息,但在打开此功能时无法找到旧会话 ID 的持久性。

开启此功能是否会导致用户自动注销,因为 php 现在需要安全 cookie,但登录用户没有这些 .. 切换后?

【问题讨论】:

    标签: php security session-cookies


    【解决方案1】:

    是的,它会将他们注销,因为他们的会话将结束。

    【讨论】:

    • 你能详细说明一下吗,或者你能列出一个资源吗?
    • 一个月前我遇到了确切的问题。所以我很难找到它:)
    【解决方案2】:

    有趣的是,在我的职业生涯中,我已经为数百个使用 HTTPS 的网站启用了此功能,并且从未让所有人退出。

    这些 .ini 设置通常应用于新的会话 cookie,secure 标志是让浏览器知道不通过纯文本 HTTP 传输。它不应该有任何追溯性后果。

    session_start() 的代码调用一个名为 php_session_start() 的 C 函数(在大多数情况下)checks $_COOKIE

    cookie 处理代码为SAPI-dependent,但不包含任何“如果未设置secure,则立即丢弃”的特定逻辑。

    除非出现一些包含此逻辑的奇怪 SAPI 代码,否则最有可能发生的情况是 cookie 不再发送到缺少 HTTPS 的 HTTP 端点,因此看起来用户正在注销(但前提是他们没有使用HTTPS 无处不在)。

    简而言之:

    • 不,它不应该注销用户,除非他们没有通过 HTTPS 浏览(他们应该这样做)
    • 但是,如果发生这种情况,暂时的不便值得安全收益。

    【讨论】:

    • 只是为了确认一下,这些标志只用在Set-Cookie 标头中,它被发送到浏览器。标头指示浏览器将来如何使用 cookie(例如,对 JS 不可用,或不安全的 HTTP)......当将 cookie 发送回服务器时,浏览器只发送名称和值。服务器不知道它们被存储为什么,如果服务器重新发送 cookie(带有这些标志),浏览器将简单地替换旧的 cookie...所以设置这些标志不会导致用户被登录out(除非有其他问题,例如使用 HTTP)
    猜你喜欢
    • 2012-09-18
    • 2017-07-06
    • 2016-02-14
    • 2019-01-05
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    • 2010-09-29
    • 2015-07-16
    相关资源
    最近更新 更多