在PHP中通过安全连接发送cookie有什么影响

时间:2015-09-06 23:35:23

标签: php http session cookies https

我最近开始密切关注PHP会话,以加强我网站的安全性。我遇到了session_set_cookie_params()。我对第4个参数(boolean secure)特别感兴趣。这是否意味着站点必须运行安全的http(https)协议才能将此参数设置为true?如果没有,那么PHP如何通过安全连接为仅使用http协议的站点发送cookie?

2 个答案:

答案 0 :(得分:1)

secure标志是Cookie规范的一部分。如果浏览器收到设置了secure标志的cookie,除非连接是HTTPS加密的,否则它不会将此cookie发送回服务器。无论当前的连接状态如何,PHP都将设置 cookie,它最终不会知道或关心HTTPS的存在;由您来确保您还通过HTTPS 设置 cookie。

您应该通过HTTPS发送身份验证Cookie ,以避免中间人或其他不安全网络(例如共享未加密的星巴克Wifi)彻底劫持会话。否则,从空中抢夺秘密会话标识符是一种真正的可能性,因此任何人都可以冒充任何人。这意味着用户登录的整个时间,它应该通过HTTPS与您的服务器通信,因为cookie在整个时间内来回传递;仅使用HTTPS作为初始登录页面是不够的。

答案 1 :(得分:0)

默认情况下,会为所有请求(http和https)发送Cookie。

如果您将安全标志设置为true,则浏览器只会将其发送给https请求。

始终为身份验证Cookie设置安全标志非常重要:即使没有发出http请求,其他人也可以强制浏览器执行此操作,即使你回答301,它也是已经太晚了,他们已经以明文发送了。

对于完整的https网站,您可以系统地将安全标志设置为true。