簡體   English   中英

簡單的用戶名和密碼驗證java

[英]Simple username and password validation java

我正在嘗試創建我的第一個登錄頁面作為學習練習。

例如,我的計划是使用用戶名的鹽預先散列密碼。 將其存儲在文本文件中,然后當用戶登錄時,我將使用相同的鹽散列密碼並將結果與​​文本文件進行比較。

我是安全等方面的完整初學者,所以我不知道這是否安全? 小型應用程序的標准是什么? 如果不推薦使用這種方法,那么合適的簡單替代方法是什么?

編輯一種可能的解決方案,如果我可以讓它工作。

String unpwfield;
    unpwfield = userId.getText()+passwordfield.getText();
    if (BCrypt.checkpw(unpwfield, passwordhash))
        System.out.println("It matches");
    else
        System.out.println(userId.getText()+passwordfield.getText());

對於密碼存儲,您將需要使用散列算法。 加密哈希太快,並且不會在離線密碼猜測中減緩攻擊者的速度。 例如, bcrypt通常是最適合使用的算法。

Bcrypt 生成自己的鹽,因此您無需擔心生成這些鹽的安全方法。

我會避免使用用戶名作為鹽。 如果多次使用,salt 是為了避免使用相同的字節表示存儲相同的密碼。

原因是如果用戶重復使用相同的密碼,那么任何能夠看到密碼哈希數據的攻擊者都會立即發現這一點。 此外,如果您的系統是公開可用的,那么您的應用程序的每個實例都將以完全相同的方式存儲admin用戶的哈希值,這意味着攻擊者將能夠以admin作為鹽預先構建彩虹表。

有關更多信息和指導,請參閱密碼存儲OWASP 備忘單

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM