【发布时间】:2016-01-15 06:28:22
【问题描述】:
我有一个用纯 JSP 和 JavaBeans 编写的网络商店,它在 Tomcat 上部署并运行良好。 Tomcat 已成功配置 SSL。它只有五页:
- 主页(非安全页面)- 显示主页
- 产品页面(非安全页面) - 始终显示单个产品
- 购物车页面(非安全页面)- 添加产品后显示购物车页面
- 结帐页面(安全页面)- 包含所有信息的单个结帐页面,例如客户地址、付款方式、送货方式等
- 收据页面(安全页面) - 生成订单编号并显示订单总额。
每当我从购物车页面导航到结帐页面时,浏览器都会自动将协议从http -> https 和端口从8080 -> 8443 切换,这符合预期。但是,问题在于,只要用户从结帐页面导航到主页/产品页面,它就不会从https -> http 和8443 -> 8080 切换回来。主页/产品和购物车页面 url 都被转换为安全页面,这不是我想要的。
web.xml
<!-- Security for Checkout module -->
<security-constraint>
<web-resource-collection>
<web-resource-name>mycheckout</web-resource-name>
<url-pattern>/jsp/checkout/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
文件夹结构:
jsp/
home.jsp
product.jsp
cart.jsp
checkout/
checkout.jsp
receipt.jsp
【问题讨论】:
-
你能解决这个问题吗?
-
你不是在要求这个,因此我只添加它作为评论:我不担心这个。如果您仍然设置了 https,请不要担心返回。混合模式通常会导致比它解决的问题更多的问题:您可能会在 http 中泄漏可与 https 页面一起使用的会话 cookie。如果不是现在,那么在您的应用程序的下一次迭代中。为自己省去麻烦,一路走 https。这样你的工作就更少了,它已经设置好了。更多的 CPU 周期比你的工作时间便宜,或者比因为这样的问题而失去声誉
-
@Olaf - 有趣的解决方案,但只是想知道使用 https 的网站不会比平时慢吗?
-
您必须衡量性能影响。但请记住:当您的数据通过泄漏会话丢失时,几毫秒有什么好处。查找 Firesheep 以了解捕获 cookie 是多么容易,例如在星巴克