【问题标题】:Cookies sent over HTTP instead of SSL通过 HTTP 而不是 SSL 发送的 Cookie
【发布时间】:2019-09-06 05:24:28
【问题描述】:

我正在使用 IPB,并且我通过 SSL (HTTPS) 运行我的网站功能齐全,但我遇到了一个问题。基本上,cookie 没有“仅 https”/“安全”参数,这在 SSL 关闭的情况下非常重要,这样 cookie 就无法通过 HTTP(纯文本)传输。我读过一篇关于如何做到这一点的文章,但它不适用于 IPB。设置方法如下:

 Line 4227:    @setcookie( $_name, $value, $expires, $_path, $_domain . '; HttpOnly' );
 Line 4231:    @setcookie( $_name, $value, $expires, $_path );
 Line 4236:    @setcookie( $_name, $value, $expires, $_path, $_domain, NULL, TRUE );
 Line 4241:    @setcookie( $_name, $value, $expires, $_path, $_domain );


(来源:gyazo.com

如何强制执行“安全”参数?

【问题讨论】:

    标签: php ssl ipb


    【解决方案1】:

    就在setcookie() documentation 中。设置参数#6为TRUE:

    @setcookie( $_name, $value, $expires, $_path, $_domain, TRUE, TRUE );
                                                            ^-#6 secure
                                                                  ^-#7 httponly
    

    【讨论】:

      【解决方案2】:

      对于会话 cookie,您可以在 PHP.INI 文件中设置默认值:

      session.cookie_httponly = On
      session.cookie_secure = On
      

      或者您可以在开始会话之前在运行时设置这些。

      session_set_cookie_params($expires, $_path, $_domain, TRUE, TRUE);
      session_start();
      

      对于所有其他 cookie,您将需要使用 setcookie 函数的参数。

      setcookie($_name, $_value, $expires, $_path, $_domain, TRUE, TRUE);
      

      请注意,httponly 参数(最后一个)是在 PHP 5.2.0 中添加的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-17
        • 2014-10-08
        相关资源
        最近更新 更多