Java会话变量

时间:2008-12-04 03:30:45

标签: java session servlets variables java-ee

我听说有些人认为在会话中将信息存储在会话中是一个坏主意,这是不安全的。

因此,在多页业务流程函数中,应用程序将数据写入db,然后在需要时检索信息。 在会话中存储私人信息是否一定不安全?

3 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:1)

除了性能和并发问题之外,您还应该考虑可用性。多个打开的页面,后退按钮的工作,书签,链接到您的网站等工作?我最后在aerlingus.ie错误的一天预订了一个航班,差不多在lastminute.com预订了错误的酒店,因为他们的网站很糟糕。