Struts2:如何存储从操作到操作的安全用户名和密码

2023-12-12

在我的登录页面中,我通过用户名和密码(从 jsp 页面获取)登录,然后检查 LDAP,如果凭据正确,则继续浏览其他页面。

我想在某个地方存储用户名和密码,因为在接下来的一些页面中,我可能需要它们来制作其他东西。

我想将它们存储在会话中,但我担心这会带来安全问题。我错了吗?也许将它们存储在数据库中并在每次需要它们时查询数据库,并在会话中仅存储指向数据库记录的 ID 更好? (这可能没问题,但也许存在更快更好的方法)

哪种方式可以更好地存储它们?


不同地方不同密码

您应该为 Web 应用程序和 LDAP 使用不同的密码。就像现在一样,发现 LDAP 密码的攻击者会自动获得对您的应用程序的访问权限,反之亦然。

在 Web 应用程序中创建新密码时,通过检查其相等性(相对于 LDAP 密码),强制用户(通常希望在所有地方使用相同的密码,因为这样很容易记住)选择不同的密码。

切勿保存密码

您不应将用户密码保存在任何地方,因为任何具有数据库访问权限的人都可以检索所有密码。

正确的做法不是加密, but one-way hashing(更好地与Salt, 阻止彩虹桌攻击):

  1. 当用户创建密码时对密码进行哈希处理,然后将结果保存在数据库中。
  2. 当用户登录时,对他输入的密码进行哈希处理,然后根据数据库中的哈希值检查生成的哈希值。
  3. 如果用户忘记密码,请重置密码并要求他选择一个新密码。

在 Java 中最好的实现之一是jBCrypt, 基于BCrypt.

始终首选 char[] 而不是 String 来处理密码

因为由于不同的原因它更安全乔恩·斯基特说过 :)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Struts2:如何存储从操作到操作的安全用户名和密码 的相关文章

  • 非加密用途的最快哈希值?

    我本质上是在准备要放入数据库的短语 它们可能格式错误 所以我想存储它们的简短散列 我将简单地比较它们是否存在 所以散列是理想的 我假设 MD5 在处理 100 000 个请求时相当慢 所以我想知道散列短语的最佳方法是什么 也许推出我自己的散
  • 是否可以在 PHP 中使用 file_get_contents 来破坏 CSRF 令牌验证

    在每个会话的表单上使用令牌的 CSRF 预防方法是一种流行的方法 但是 我不明白这种令牌方式如何保护file get contentsPHP 可以获取跨域文件表单的内容 gt 它可以获取表单上的令牌并使用它 那么这种token方式是如何运作
  • REST - 复杂的应用程序

    我正在努力将 RESTful 原则应用到我正在开发的新 Web 应用程序中 特别是 为了实现 RESTful 每个 HTTP 请求本身都应该携带足够的信息 以便其接收者对其进行处理 从而与 HTTP 的无状态性质完全一致 该应用程序允许用户
  • 清理 html 字符串中的所有脚本

    HTML5 剪贴板很棒 但我正在寻找一种使其安全的方法 用户正在将文本 html 粘贴到我的网页中 这允许他们粘贴图像 表格等 我正在寻找一种方法 在将粘贴的内容添加到页面之前删除所有脚本 我需要删除
  • 将字符串从 Struts2 操作返回到 jQuery [重复]

    这个问题在这里已经有答案了 我使用 jQuery Ajax 调用 Struts2 操作 如下所示 ajax url callAction action type POST data data dataType string success
  • python:API 令牌生成及其危险

    我正在按照 Flask Web Development 一书来实现基于令牌的身份验证 基本上 用户使用 HTTP 基本身份验证对其进行身份验证 并为其生成令牌 s Serializer app config SECRET KEY expir
  • 上游太大 - nginx + codeigniter

    我从 Nginx 收到此错误 但似乎无法弄清楚 我正在使用 codeigniter 并使用数据库进行会话 所以我想知道标题怎么会太大 有没有办法检查标题是什么 或者看看我能做些什么来修复这个错误 如果您需要我提供任何conf文件或其他文件
  • 如何处理 AJAX 请求中的会话超时

    我相信你们都熟悉使用 AJAX 的投票系统 嗯 看那边 我有类似的东西 当你投票赞成或反对时 它使用 AJAX 从 votes php 请求新值 问题是我正在使用会话来获取用户 ID 因此一个人只能投票一次 如果他们在页面上坐了一个小时然后
  • Rails 安全:完全避免大规模分配

    我倾向于不需要批量分配 http guides rubyonrails org security html mass assignment我的生产代码中的功能 在我的测试代码中 我经常使用它 但在这些情况下我do想要设置任意列 因此 如果在
  • 如何比较 Struts 2 中 url 请求参数中的单个字符

    我正在读取具有单个字符的 url 参数 它将是Y or N 我必须写一个条件来检查它是否Y or N并做相应的事情 这是我写的 但似乎不起作用 总是转到其他地方 网址是
  • iPhone 和加密库

    我想我必须在我的 iPhone 应用程序中使用加密库 我想问你有关苹果公司实施的加密货币出口政策的影响 我需要做一些额外的事情吗 例如填写表格等 1 如果我使用 MD5 进行哈希处理 2 如果我使用对称加密 Thanks EDIT 2009
  • Spring Boot,Websockets无法从Session获取用户(即java.security.Principal)

    与 一起工作Spring Boot 1 2 1 RELEASE and Spring Websockets 运行嵌入式时存在部署运行时问题Jetty 9 我不能伪造用户 java security Principal 当应用程序部署在本地主
  • Windows DPAPI - 如何处理熵?

    我正在使用 Windows DPAPI 来加密一些敏感数据 密码存储在注册表中 这一切都运行良好 但我想知道是否有人可以澄清我对 NET 中 可选 提供给 ProtectedData Protect 的 熵 字节的理解 熵 字节数组似乎类似
  • 如何在验收测试期间从 Struts 2 获取 ActionContext?

    我正在使用 cucumber jvm 在一个使用 Struts 2 和 Tomcat 作为我的 Servlet 容器的应用程序上编写验收测试 测试行为 在我的代码中的某个时刻 我需要从 Struts 2 中获取用户HttpSession 由
  • ASP.Net 中的 Session.Abandon() 和 Session.Clear() 有什么区别?

    有什么区别Session Abandon and Session Clear 在 ASP Net 中 Session Abandon 将结束当前会话 Session End将被解雇 下一个请求将激发Session Start event S
  • hibernate sessionfactory如何管理session?

    我刚刚得到了Hibernate Session和Connection之间的关系 但现在 我又遇到了一个问题 hibernate sessionfactory如何管理session 在以下代码段中 DAO 类的 save 方法 Session
  • 我可以在 PHP 会话变量中安全地存储用户名和密码吗?

    我想在 REST api 之上制作一个轻量级的 web 应用程序 用户只需进行一次身份验证 从那时起 所有针对 web api 的请求都希望通过以某种方式保持用户名和密码有效来完成 我已经做了一个工作原型我在哪里将用户名和密码存储在会话变量
  • 如何在 Laravel 5 中的视图模板上显示会话数据

    我正在尝试在 Laravel 5 中的视图模板上显示会话数据 但是它似乎没有显示任何内容 这是我用来设置会话的代码 Session set bookingConfirmed BookingDates where id Session get
  • 为什么这个动作不抽象? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我很难理解为什么一个类中的一个操作是抽象的 而另一个类中的操作不是 源代码1 编译时出错 https gyazo com cd3c
  • FormsAuthentication:安全吗?

    Using 表单验证构建成asp net创建一个为经过身份验证的用户创建 cookie 的登录系统非常快速且简单 FormsAuthentication SetAuthCookie uniqueUsername false 与中的一些代码配

随机推荐