通过HTTP而不是SSL发送的Cookie

时间:2013-08-12 21:39:17

标签: php ssl ipb

我正在使用IPB,我通过SSL(HTTPS)运行我的网站功能齐全,但我有一个问题。基本上cookie没有参数“https only”/“secure”,这在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 );

img http://gyazo.com/bb00b575477dc6bbe42b1b6be9e1c96e.png

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

2 个答案:

答案 0 :(得分:2)

它位于setcookie() documentation中。将参数#6设置为TRUE

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

答案 1 :(得分:0)

对于会话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);

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