【问题标题】:Java session variablesJava 会话变量
【发布时间】:2010-09-25 06:26:56
【问题描述】:

我听说有些人认为在会话中将信息存储在服务器上是个坏主意,因为它不安全。

结果,在多页业务流程功能中,应用程序将数据写入数据库,然后在需要时检索信息。 在会话中存储私人信息是否必然不安全?

【问题讨论】:

    标签: java session servlets variables jakarta-ee


    【解决方案1】:

    只要会话本身不受hijacking 的影响,在会话中存储属性就没有安全风险。

    存在一些涉及并发和会话的严重问题。由于多个线程同时为单个会话发出请求非常常见,因此您必须确保存储在 Session 中的对象是线程安全的。要么使它们不可变,要么通过同步等内存屏障使它们成为线程安全的。我强烈推荐article on the subject by Brian Goetz

    【讨论】:

    • 文章链接坏了:-(
    • @avgvstvs 感谢您的提醒。我在推特上发布了 Brian Goetz,看看他是否在其他地方发布了副本。
    【解决方案2】:

    HTTP 会话本身并不是不安全的。但是,根据您的应用程序服务器/容器,将会话 cookie 传递回浏览器的机制(以及缺乏传输层安全性 - SSL)可能允许恶意方执行各种攻击(跨站点脚本、会话劫持) , 等等。)。 我会花一些时间研究这些东西以及 SQL 注入,以了解使用 HTTP 会话的全部后果。如果您的应用程序在防火墙内运行,则通常存在比这更大的安全风险,例如社会工程。

    【讨论】:

      【解决方案3】:

      除了性能和并发问题,您还应该考虑可用性。多个打开的页面、后退按钮、书签、链接到您的网站等是否有效?我最终在aerlingus.ie 上订错了一天的航班,并且几乎在lastminute.com 上订错了酒店,因为他们的网站很糟糕。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多