国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Passwort-Hashing und -Verifizierung mit der Funktion ?password_hash' von PHP
P粉798010441
P粉798010441 2023-10-13 23:55:11
0
2
899

In letzter Zeit versuche ich, meine eigene Sicherheit in ein Anmeldeskript zu implementieren, über das ich im Internet gestolpert bin. Nachdem ich Schwierigkeiten hatte zu lernen, wie ich mein eigenes Skript erstellen kann, um Salt für jeden Benutzer zu generieren, bin ich auf password_hash gesto?en.

Soweit ich wei? (basierend auf der Lektüre dieser Seite), entsteht bei der Verwendung von password_hash bereits Salz in der Leitung. Das ist echt?

Meine andere Frage ist, w?re es nicht klug, zwei Salzsorten zu haben? Eine direkt in der Datei und eine in der Datenbank? Wenn also jemand das Salt in der Datenbank besch?digt, k?nnen Sie das Salt trotzdem direkt in der Datei speichern? Ich habe hier gelesen, dass das Aufbewahren von Salz niemals eine kluge Idee ist, aber es verwirrt mich immer, was die Leute damit meinen.

P粉798010441
P粉798010441

Antworte allen(2)
P粉520545753

是的,您理解正確,函數(shù)password_hash()將自行生成鹽,并將其包含在生成的哈希值中。將鹽存儲在數(shù)據(jù)庫中是絕對正確的,即使已知它也能完成其工作。

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($_POST['password'], PASSWORD_DEFAULT);

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($_POST['password'], $existingHashFromDb);

您提到的第二個鹽(存儲在文件中的鹽)實際上是胡椒或服務(wù)器端密鑰。如果你在散列之前添加它(就像鹽一樣),那么你就添加了胡椒粉。不過,有一種更好的方法,您可以首先計算哈希值,然后使用服務(wù)器端密鑰加密(雙向)哈希值。這使您可以在必要時更改密鑰。

與鹽相反,這個密鑰應(yīng)該保密。人們經(jīng)?;煜⒃噲D隱藏鹽,但最好讓鹽發(fā)揮其作用并用密鑰添加秘密。

P粉310931198

建議使用password_hash來存儲密碼。不要將它們分成數(shù)據(jù)庫和文件。

假設(shè)我們有以下輸入:

$password = $_POST['password'];

您首先通過執(zhí)行以下操作對密碼進行哈希處理:

$hashed_password = password_hash($password, PASSWORD_DEFAULT);

然后查看輸出:

var_dump($hashed_password);

正如你所看到的,它是經(jīng)過哈希處理的。 (我假設(shè)您執(zhí)行了這些步驟)。

現(xiàn)在,您將此散列密碼存儲在數(shù)據(jù)庫中,確保您的密碼列足夠大以容納散列值(至少 60 個字符或更長)。當(dāng)用戶要求登錄時,您可以使用數(shù)據(jù)庫中的哈希值檢查輸入的密碼,方法如下:

// Query the database for username and password
// ...

if(password_verify($password, $hashed_password)) {
    // If the password inputs matched the hashed password in the database
    // Do something, you know... log them in.
} 

// Else, Redirect them back to the login page.

官方參考

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage