簡體   English   中英

這種密碼存儲方法是否安全?

[英]Is this password storage method secure?

我只是想如果使用從密碼本身創建的鹽創建密碼哈希是可以安全使用的。 這是php中的一個例子:

<?php
$pass = $_GET['pass'];
$salt = hash('whirlpool', $pass);
$pass = md5(hash('whirlpool', $salt.$pass));
echo $pass;
?>

這有意義嗎?

問候。

鹽的意思是讓每個人的密碼都是唯一的。 因此,在這種情況下,只需散列密碼並將其添加為鹽,當給出相同的原始密碼時,仍然會使2個用戶的最終散列密碼相等。 最好給每個用戶一個隨機的鹽,並將其存儲在數據庫中的密碼旁邊。

沒有必要散列和重新散列並重新散列密碼。

使用具有良好哈希碼算法的salt是一件好事,但是您需要強制您的用戶發送一個具有最小大小和字母數字字符的強密碼

筆記:

  • 使用sha1比md5好。
  • 用好 (謝謝@John Bartholomew)
  • 強制您的用戶創建強密碼

您可以保護密碼和鹽。

  1. 使用SHA256或更高版本(2012),並且在未來幾年內必須更高。

  2. 為每個用戶使用不同的鹽。

  3. 使用計算的鹽。

  4. 創建一個16到32字節的Salt並將其存儲在數據庫中,稱為“DBSalt”。

  5. 創建任何舊算法來操作salt但僅將算法保留在代碼中。 即使像DBSalt + 1這樣簡單的東西也很有用,因為如果有人獲得了你的數據庫,他們實際上沒有正確的鹽,因為計算了正確的鹽。

  6. 按如下方式計算密碼:

    CreateHash(saltAlgorithm(dbSalt),密碼);

  7. 您可以通過使用以不同方式操作DBSalt的算法列表來添加安全性。 每次用戶更改密碼時,您還會對DBSalt使用不同的計算

  8. 您可以通過將這些算法存儲在系統外部的Web服務器上來增加安全性,這樣如果您的數據庫和代碼都被黑客攻擊,他們仍然沒有鹽。

    1. 您還可以通過使用salt之前,之后或兩者來提高安全性,並且數據庫本身不提供此信息。

“你可以通過...增加安全性”評論沒有盡頭。 請記住,每次添加安全性時,都會增加復雜性,成本等......

如何有效地將存儲為哈希的密碼加密到數據庫中

我是這樣做的

<?php

$my_key = "myapp";
$temp_pwd = htmlentities(trim($_POST['password']));
$hashed = sha1($my_key.$temp_pwd);

save $hashed in database on signup
and with every login attemp merge the input password value with your key and make a hash of it and than compare with database password value


?>

暫無
暫無

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

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