在PHP中通过安全连接发送cookie的含义是什么?


What are the implications of sending cookies over secure connections in PHP

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

secure标志是cookie规范的一部分。如果浏览器接收到设置了secure标志的cookie,它将不会将此cookie发送回服务器,除非连接是HTTPS加密的。不管当前连接状态如何,PHP都将设置 cookie,它最终不会知道或关心HTTPS的存在;这取决于你是否也通过HTTPS设置 cookie。

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

默认情况下,所有请求(http和https)都发送cookie。

如果你将安全标志设置为true,浏览器将只对https请求发送它们。

始终为身份验证cookie设置安全标志是很重要的:即使不发出http请求,其他人也可以强迫浏览器这样做,即使您回答301,也已经太晚了,它们已经以明文发送。

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