【问题标题】:Is it safe to store critical data in HttpSession?在 HttpSession 中存储关键数据是否安全?
【发布时间】:2012-05-03 19:40:17
【问题描述】:

我将用户名、密码和电子邮件等用户数据存储在您的HttpSessionsetAttribute 中。

我想知道将关键数据存储在HttpSession 中是否安全。

【问题讨论】:

  • 为什么要在HttpSession对象中存储密码??
  • 没有可接受的理由来存储纯密码 anywhere,无论是会话、cookie、数据库、缓存(除了你的 CPU 的一个 :p)或任何东西否则这不仅仅是一个短暂的变量。
  • 我真的没有理由保存密码,而是存储其他用户数据以便从 jsp 和 el-expresion 快速访问。但也可以将用户数据保存在 bean 中。

标签: java google-app-engine


【解决方案1】:

尝试将登录信息存储在以下用户存储库之一(登录时检查有效性):

  • 在内存中(比如说,它可能是一个 xml 文件),
  • 基于 JDBC,
  • 基于 LDAP。

这不是身份验证选项的完整列表。

您至少应该使用 SSL/HTTPS 登录和任何其他敏感数据。

看看这篇文章:http://en.wikipedia.org/wiki/Session_hijacking

关于这个问题,这里有一个很好的 SO 讨论:What is the best way to prevent session hijacking?

这里也提到了一些安全问题:What should every programmer know about web development?

【讨论】:

  • 但是存储在会话中的数据永远不会离开服务器,对吧?
【解决方案2】:

理想的做法是永远不要以应用程序的任何方式保存密码。理想情况下,如果您使用基于数据库的身份验证或使用 LDAP 身份验证,则密码需要加密保存在数据库的用户表中。

认证成功后,可以在http session中保留email、name等字段。最好将用户名保留在会话中(这是唯一的),并且必须通过执行数据库读取基于此用户名从数据库中读取配置文件信息。 可以将此信息保存在 cookie 中,以便为经常访问者重新填充一些信息。

最重要的是不要将密码保存在隐藏变量、cookie 或查询字符串中。

任何必须保留的敏感信息都必须在一个 SESSION 中但已加密。

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 2021-08-21
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 2011-12-14
    • 2014-10-27
    相关资源
    最近更新 更多