2

我正在创建自己的身份验证系统(使用 Java)。当用户通过身份验证并从数据存储加载用户对象时,将此用户对象存储到会话是安全的,并假设当用户在会话中有用户对象时,它是通过合法登录获得的真实有效的用户对象?有没有我在这里没有看到的任何可能的安全问题?

4

4 回答 4

2

会话劫持?您的登录页面上可能存在 SQL 注入或 XSS?中间人攻击?

在设计安全登录系统时,您只需考虑几件事。

于 2012-07-25T06:33:56.220 回答
2

原则上是的。

您一个人可以完全控制会话变量(客户端对这些变量既没有读取权限也没有权限)。如果绕过了身份验证机制,这并不是因为用户设置了自己的会话变量(例如,他可以设置 cookie 的内容)。

话虽如此,当然有一些方法可以破解网页(在OWASP 前 10 名中阅读,包括 CSRF、XSS 等)。

于 2012-07-25T06:35:10.590 回答
0

我个人倾向于在我的所有网络应用程序上执行此操作,但我会在将用户对象中的敏感数据存储在会话中之前删除或加密它,例如密码

替代方法是填充和使用用户对象的轻量级版本,该版本将仅包含会话中所需的数据(即用户 ID、名字、姓氏)

于 2012-07-25T06:37:24.170 回答
0

添加到所有其他帖子中,我认为还有一个安全问题。您database仅在用户登录时验证用户,然后您将用户设置为session让说当用户登录并且session在两者之间处于活动状态时访问被撤销,在这种情况下,用户将有权访问,直到他的会话寿命是不可接受的.

于 2012-07-25T06:38:59.653 回答