2

我正在寻找有关如何在我的 Java 独立应用程序(Netbeans+Spring+Hibernate+MySQL 数据库+Swing)中处理密码字段的最佳实践。

1)我创建了一个带有密码列的表......那么,该列必须是哪种数据类型?2)您建议在我的应用程序上遵循和实施哪种 SALTing 密码算法?3)您建议将密码保存为纯文本还是根据算法转换后?4)所有这个过程的示例代码

我希望我们可以帮助许多其他必须处理 Spring 的独立应用程序以及围绕 Hibernate 处理此类问题的任务的开发人员。

在此先感谢您的任何建议。

4

1 回答 1

2

您永远不应该将密码作为纯文本存储在您的应用程序中。不建议将其用于高度安全的应用程序。您可以使用 Spring Framework 本身提供的 PasswordEncoder 将密码以编码格式存储到数据库中。您需要在 applocationContext.xml 文件中进行以下设置。

<security:authentication-manager>
        <security:authentication-provider >
            <security:jdbc-user-service data-source-ref="dataSource"
              users-by-username-query="
              select  emailid username,password,'true' enabled from tbl_LoginDetails
              where emailid=?"
             authorities-by-username-query="
             select a.emailid username,b.authority from tbl_LoginDetails a,tbl_UserRoles b
            where a.userId=b.userId
            and a.emailid=?"/>
            <security:password-encoder  ref="passwordEncoder">
            </security:password-encoder>
        </security:authentication-provider>
    </security:authentication-manager>


    <bean name="passwordEncoder" class="org.springframework.security.authentication.encoding.ShaPasswordEncoder"></bean>

在用户注册时,您需要自己在控制器中对密码进行编码,然后再与类一起存储在数据库中ShaPasswordEncoder

希望这对您有所帮助。

于 2012-10-30T05:34:00.897 回答