如何将PHPSESSID cookie限制为https?

如何将PHPSESSID cookie限制为https?,php,security,session,Php,Security,Session,我想限制phpsessid cookie仅用于管理员会话期间的安全连接,但允许普通用户在不安全连接上使用phpsessid。在调用session_start()之前,每次运行脚本时都需要调用session_set_cookie_参数,但我需要先调用session_start()来检查会话数据,这些数据告诉我用户是否为管理员 我希望页面只能通过https(管理面板、登录等)访问,网站的其他部分(文章等)可以通过普通用户的正常连接访问,也只能通过管理员的安全连接访问。这样管理员的sid就不会暴露;公

我想限制phpsessid cookie仅用于管理员会话期间的安全连接,但允许普通用户在不安全连接上使用phpsessid。在调用session_start()之前,每次运行脚本时都需要调用session_set_cookie_参数,但我需要先调用session_start()来检查会话数据,这些数据告诉我用户是否为管理员


我希望页面只能通过https(管理面板、登录等)访问,网站的其他部分(文章等)可以通过普通用户的正常连接访问,也只能通过管理员的安全连接访问。这样管理员的sid就不会暴露;公开sid并仅依靠IP、用户代理等检查是不够的。重要的交易将受到密码保护,但不可能对所有交易都进行密码保护,这将非常麻烦

一个简单的方法可能就是使用和设置会话的名称。然后,只在管理页面和HTTPS页面上启动“管理会话”

在PHP中设置和配置选项。这可以在运行时或在php.ini中完成。cookie_secure是一个糟糕的名称,但它告诉客户端,此cookie必须始终通过https传输

谢谢。我一直在尝试,似乎有效。需要考虑的一些事情:1)每次运行时,在会话开始()之前,您需要检查是否存在管理会话cookie,如果存在,请调用会话名称(管理会话名称)。2) 登录注销时:调用session_regenate_id(true)、session_write_close(),如果session_名称更改(设置session_cookie参数、取消设置上一个session cookie、使用新的session名称调用session_名称),最后调用session_start(),很高兴它为您指明了正确的方向。如果您的问题已解决,请将问题标记为已回答。这很有趣,但不是最佳解决方案。过一段时间,我注意到我采用了这种方式,因为文档说在会话开始()之前运行的每个脚本都需要调用set_session_cookie_参数。但是,如果会话类型(正常或管理)发生更改,我在登录/注销时只需调用set_session_cookie_参数,它就可以工作了。文档中似乎有问题。我仍然发现为管理员使用不同的会话名称很有用。如果没有,在以管理员身份登录、请求任何标准http url后,您将获得一个新的不安全cookie,该cookie将取代以前的cookie,并且您的浏览器将丢失对管理员会话id的跟踪。我还检查了我从未通过不安全的连接收到管理员会话cookie,这不是徒劳的,通过这种方式,我发现firefox会错误地通过非安全连接发送安全cookie,如果您在https页面上,擦掉“s”并按enter键;如果键入新url或遵循http链接,则不会。其他浏览器没有问题。可能存在重复的