2013-10-22 38 views
2

我想讓用戶有一個安全問題。我正在使用Spring3,並不確定是否存在這樣做的標準方法。任何人都可以指向我這樣的標準嗎?用戶在春天忘記了密碼替代方法

+0

從安全角度來看,安全問題非常成問題,因爲它們很容易被猜出。使用它們時要小心。 – jHilscher

回答

0

我不熟悉覆蓋此標準,但我會建議你對待安全問題,就像你的密碼...

  • 確保您打開自動完成=」關閉」,因此,瀏覽器不會記得他們的答案

  • 生成的答案鹽醃哈希(或者你可以重複使用一個密碼)

    public byte[] generateSalt() throws NoSuchAlgorithmException { 
        // VERY important to use SecureRandom instead of just Random 
        SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); 
    
        // Generate a 8 byte (64 bit) salt as recommended by RSA PKCS5 
        byte[] salt = new byte[8]; 
        secureRandom.nextBytes(salt); 
    
        return salt; 
    } 
    
  • 加密答案

    public static byte[] getEncryptedAnswer(String answer, byte[] salt) throws NoSuchAlgorithmException, InvalidKeySpecException { 
        KeySpec spec = new PBEKeySpec(answer.toCharArray(), salt, 20000, 160); 
    
        SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); 
    
        return secretKeyFactory.generateSecret(spec).getEncoded(); 
    } 
    

同時存儲鹽漬哈希和加密的答案。在這一點上,你幾乎可以像密碼一樣使用這個問題的答案。


現在所有的說法,我必須同意jHilscher ......太多這些安全問題是可以預測或容易猜到的。最喜歡的顏色,他們畢業的年份等等......我從來沒有用正確的信息回答這些問題。我建議您在需要時找到另一種重置密碼的方法。