我正在建立一个购物车网站,但是在 HTTPS 和 HTTP 之间共享 PHP 会话时遇到了问题。
我的安全地址:https://secure.domain.com 我的常用地址:http://域名.com
我读过这里关于 serverfault 的一些页面,并自己总结出了一个解决方案。我想知道我的解决方案是否安全且实用。
我的解决方案: 1:在新会话中,将 PHP 会话 ID、用户 IP 和 ID(随机生成的 6 位数字并作为 cookie 保存到客户端计算机)保存到数据库 2. 当客户端进入 HTTPS 页面时。页面检查数据库以查找与 PHP 会话 ID 匹配的 ID 和 IP 地址。
如果你有更好的解决方案,请分享
谢谢
答案1
此解决方案的问题在于,您通过 HTTP 发送的任何身份验证数据(包括会话 ID 和随机用户 ID)都可能被窃取。请参阅会话劫持。
有两种可行的解决方案:
使整个站点仅支持 HTTPS。
允许 HTTP,但在允许用户登录之前将用户重定向到 HTTPS。然后使任何会话 cookie 仅使用 HTTPS,因此如果用户切换回 HTTP,他们的会话数据将不会以明文形式发送。