我是C的老手,但是Java / Tomcat的原始新手。
我只在http中使用Tomcat会话管理。当我看到切换到https时,我遇到了问题。
我为Tomcat收集的是,如果要在从http切换到https并返回到http时保持会话,则必须从http会话开始。当浏览器启用cookie时,这对我来说很好。
但是当浏览器被禁用cookie(并且正在使用URL重写)时,将http切换到https或再次返回会导致每次都启动一个新的会话。我假设这是一个安全问题。
Q1 - 是否可以/希望使用URL重写维护http和https之间的会话?
Q2 - 如果不可能那么电子商务开发人员对非cookie用户做了什么?
我不想阻止非cookie人使用我的网站。我确实希望在http和https之间切换一些灵活性。
感谢您的帮助, 史蒂芬。
答案 0 :(得分:1)
似乎不希望使用相同的cookie或URL令牌在HTTP和HTTPS之间维护会话。
想象一下您是用户登录的情况,其中给定的cookie(或URL令牌)来回传递电子商务网站中的每个请求/响应。如果中间的某个人能够读取该cookie,那么他可以使用它登录该站点的HTTP或HTTPS变体。即使合法用户正在通过HTTPS进行操作,攻击者仍然可以访问该会话(因为他也将拥有合法的cookie)。他可以看到购物车,付款方式等页面,或许可以更改送货地址。
在HTTP会话和HTTPS会话之间传递某种形式的令牌是有意义的(如果您正在使用会话),但将它们视为同一会话会导致某些漏洞。在查询参数中创建一次性令牌只是转换可能是一个解决方案。但是,您应该将它们视为两个单独的经过身份验证的会话。
有时使用混合HTTP和HTTPS内容的网站会出现此漏洞(某些浏览器(如Firefox)会在发生这种情况时向您发出警告,但大多数人会在首次弹出时将其禁用)。您可以为主页面提供HTTPS会话cookie,但该页面包含公司徽标的图像,而不是纯HTTP。不幸的是,浏览器会为两者发送cookie(因此攻击者可以使用cookie)。我已经看到它发生了,即使有问题的图像不存在(浏览器会将带有cookie的请求发送到服务器,即使它返回了404未找到)。