我正在为我的硕士项目开发一个网络应用程序。它是一个供教授管理学生项目的系统,服务器端代码使用Java,数据库使用HSQLDB,表现层使用JSP,运行在tomcat上。将存储的数据不包含任何敏感信息(学生ID、财务信息等),但用户名和密码是必需的,因此我想在学生使用密码的情况下保护密码本身他们将我的应用程序用于其他一些更重要的应用程序(即使我告诉人们不要这样做,这无疑会发生)。我以前从未研究过这种事情,我很迷茫。我确实找到了一篇解释如何使用Java来createahashofapassword的好文章,我在tomcatdocumentation中找到了信息解释如何设置领域中使用的哈希方案
我已经到了需要选择一种方法来安全地将用户密码保存在数据库中并能够在用户登录网站时检查它们是否匹配的时候。我目前正在使用Spring2.5,但正在慢慢升级到Spring3。你会建议我什么来保证密码安全?我知道这个问题已经在这里和那里以类似的形式得到了回答,但我希望看到一些关于如何做到这一点的准确的、最新的答案,这也可以防止今天的密码黑客攻击技术。用salt散列密码的最合适方法是什么?我的意思是什么算法可以更好地使用(如果有的话)?我应该改用bcrypt吗?jBCrypt是一个很好的库吗?有没有更好的方法来保护密码?使用Jasypt怎么样?您使用什么技术来安全地存储用户密码?编辑:虽然我没
这个问题让我又开始思考密码散列。我目前使用bcrypt(特别是py-bcrypt)。我听说过很多关于PBKDF2和scrypt的信息。我想知道是否有任何我可能不知道的“更现代”的密码散列方法(因为它们是新的,所以人们不会那么多地谈论它们),或者我可能不知道的其他方法不知道。然后从那里继续,我应该使用哪一个?大多数人似乎都推荐bcrypt,但我想知道这是否只是因为它很旧(阅读:众所周知)。scrypt似乎更好(内存使用量可变)。我对PBKDF2了解不多。所以如果我制定一个用户管理方案,我应该使用其中的哪一个?还是我应该使用完全不同的东西? 最佳答案
这个问题在这里已经有了答案:Whyischar[]preferredoverStringforpasswords?(18个答案)关闭4年前。我在将普通密码作为字符串存储在内存中时遇到问题。根据引用文献,由于字符串是不可变的,因此使用字符串数据类型存储内存中的敏感数据存在漏洞。https://www.geeksforgeeks.org/use-char-array-string-storing-passwords-java/Whyischar[]preferredoverStringforpasswords?我能否通过使字符串变量无效而不是使用字符数组或字符串缓冲区/生成器来解决此安全问
这个问题是这里问题的后续问题:Whyischar[]preferredoverStringforpasswords?这个问题对于理解为什么使用char[]而不是String很好;但是,它没有解释如何以安全的方式对char[]执行密码验证。这就是我想知道的。简单来说,我需要检查密码是否满足以下要求:至少包含一个大写字母至少包含一个小写字母至少包含一个数字至少包含一个符号至少是n个字符,但不超过m现在我明白了如何使用正则表达式来执行验证......这些答案展示了如何做到这一点:RegexpJavaforpasswordvalidationPasswordmustbe8charactersi
我正尝试通过JNDI更改用户密码,但出现以下错误。javax.naming.directory.SchemaViolationException:[LDAP:errorcode65-条目uid=yiwei,ou=Administrator,o=SID,dc=QuizPortal无法修改,因为生成的条目会违反服务器模式:条目uid=yiwei,ou=Administrator,o=SID,dc=QuizPortal违反了DirectoryServer架构配置,因为它包含该条目中定义的任何对象类都不允许的属性用户密码];下面是我的代码。publicclassModifyAtt{public
关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭10年前。Improvethisquestion我读到将要使用的盐应该与散列密码具有相同的长度,这背后的原因是什么?它会增加密码保护吗?我读过Here:Tomakeitimpossibleforanattackertocreatealookuptableforeverypossiblesalt,thesaltmustbelong.Agoodruleofthumbistouseasaltthatisthesamesizeastheoutput
我们基于Web的应用程序将用户帐户绑定(bind)到使用帐户创建期间指定的密码的用户。在Java的情况下,在将其哈希值保存在数据库中之前,如何安全地处理密码。更具体地说,如何确保包含密码的字符串在足够短的时间间隔内被垃圾回收? 最佳答案 如果有可能(在web应用程序中可能比较困难),最好将密码存储在字符数组中,而不是存储在字符串中。如果您完成存储密码,您可以使用Array.fill()在内存中覆盖它。并通过丢弃它使垃圾收集器可以使用该引用:Arrays.fill(password,'');password=null;我只是注意到取消
我正在做一个项目,我需要一组密码限制,其中包括一个不允许使用的密码文件(所有常见密码,如“abc”、“abcdef”、“12345”、“密码”等等)密码文件将包含大约10000-15000个单词。现在我想确保当用户设置/更改密码时,它不存在于列表中。我正在考虑在Java中使用字典(或map)(桶为“A”、“B”、“C”....“Z”、“NUMBERS”、“SPECIAL_CHARS”),这样我就可以检查第一个字符,然后搜索相应的桶。但我不确定我能从中得到什么样的表现。关于使用“禁止密码”列表的任何建议......还有其他需要注意的指示吗? 最佳答案
我在java中有一个属性文件,我在其中存储了我的应用程序的所有信息,例如Logo图像文件名、数据库名称、数据库用户和数据库密码。我可以将加密的密码存储在属性文件中。但是,可以使用反编译器从jar中读取key或密码。有没有办法将数据库传递安全地存储在属性文件中? 最佳答案 有多种方法可以解决这个问题。如果您能想出一种方法让用户在应用程序启动时为keystore提供密码,最合适的方法是使用key加密所有值,并将该key存储在keystore中。keystore的命令行界面是使用keytool。然而,JSE也有API以编程方式访问keys