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