2

Java スタンドアロン アプリケーション (Netbeans+Spring+Hibernate+MySQL データベース+Swing) でパスワード フィールドを処理する方法に関するベスト プラクティスを探しています。

1)パスワード列を含むテーブルを作成しました....では、この列はどのデータ型でなければなりませんか?2) パスワードを SALT するためのどの種類のアルゴリズムに従って、私のアプリに実装することをお勧めしますか? 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>

ユーザー登録時に、 class を使用してデータベースに保存する前に、コントローラーで自分でパスワードをエンコードする必要がありますShaPasswordEncoder

これがお役に立てば幸いです。

于 2012-10-30T05:34:00.897 に答える