質問

にJavaアプリケーションのスタックとSpring&Hibernate(JPA)のデータアクセスの層は何か良い方法を適用するパスワードを暗号化(とアノテーションを用)、できるだけ詳細についてできるのではないかと考えてそれぞれについて、"これまでのチュートリアル等)?

で理解されてい使用 JCA 対応アルゴリズムの暗号化、パスワードは、好な実施のためのラッパーロジックがあれば簡単です。

んでJasyptた)いも決して悪くはないのですがオプションというのでびとがどのような他の人が使っている。ればどなたでも利用Jasyptまたは代替の詳細をご体験できます。

役に立ちましたか?

解決

Javaに必要な図書館で提供します。単に作成ユーティリティメソッドを実装したハッシュとの塩として記載されて OWASP.

なので、しばらく日本にいるコードなスト依存関係を、この 史郎 図書館(旧 JSecurity実施 何で記述されていますOWASP.

でも見えるようにJASYPT図書館では、 類似の記.

私はこの答しないもの春やHibernateなんかまいに活用していくことがこのシナリオ。

他のヒント

MD5は今クラッキングあるが

MD5またはSHA-256は、罰金になります。

たぶん私は問題を誤解し、それだけでハッシュされたパスワードを比較する必要があります。

休止状態では、単なる文字列として保存します。

:検証側では、などの方法があります
public validate(String user, String pass)
{
    if(getUser(user).getPass().equals(getHash(pass)))
        return true;
    return false;
}

がありJasyptでそれを行うにはHibernate固有の方法ではないようですが、あなたは春にパスワードの暗号化を設定することができます:

  <!-- 
   Set up string digester here so we can configure it for more pools if it's a problem... 
  -->
  <bean id="stringDigester" class="org.jasypt.digest.PooledStringDigester">
    <!-- same settings as StrongPasswordGenerator -->
    <property name="poolSize" value="2"/>
    <property name="algorithm" value="SHA-256"/>
    <property name="iterations" value="100000"/>
    <property name="saltGenerator">
      <bean class="org.jasypt.salt.RandomSaltGenerator"/>
    </property>
    <property name="saltSizeBytes" value="16"/>
  </bean>

  <!-- ...and then we only have to deal with the passwordEncryptor interface in code. -->
  <bean id="passwordEncryptor" class="com.myproject.util.StringPasswordEncryptor">
    <property name="stringDigester" ref="stringDigester"/>
  </bean>

その後、あなたは)暗号化を取得し、次にてencryptPassword()またはcheckpasswordを(いずれかを呼び出すためにcontext.getBean( "passwordEncryptor")を呼び出します。

あなたは、あなたがまた春のセキュリティを使用することができ、あなたのアプリケーションで春を使用している場合は、いくつかのパスワードのエンコーダをご提供する、すなわち<のhref = "http://static.springsource.org/spring-security/site/docs/3.0.x/apidocs/org/springframework/security/authentication/encoding/ShaPasswordEncoder。 HTML」のrel = "nofollowをnoreferrer"> ShaPasswordEncoderする あなたは StackOverflowの

でそれを見つけることができます

私はちょうどSHA-256(username + ":" + password + ":" + salt)とpasswdと呼ばれる64文字列にデータベースに保管するために同様のものを使用します。

ウィキペディアは塩に関連し、言う:「ソルトデータ辞書エントリの事前暗号化を使用して、辞書攻撃を複雑にする:使用する塩の各ビットは、必要なストレージと計算量を倍に...最高のセキュリティを強化するために、塩の価値はありますデータベースが盗まれたとき、これは利点を提供していますが、塩ではありません。パスワードデータベースとは別の、秘密にしておく。」

それでは彼らのログイン試行を経由して提供されたパスワードを使用して同じハッシュを生成し、提供されたユーザ名と、データベースからユーザーを取得し、認証、およびデータベースのものに比較することができます。また、ログイン試行(例えば、5につき5分間)のために制限いくつかの速度で加えます。ユーザーがパスワードを忘れた場合、パスワード(あなたはそれが保存されていないので)、それらを電子メールで送信しない、また彼らに新しい生成されたパスワードを電子メールが、それらに変更パスワードキー/ナンス/塩とそのパスワードを変更するためのリンクを電子メールで送信NEVERあなたが反対確認することができURLます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top