Ausführliche Erklärung der Passwortsicherheit im PHP Password Hashing

墨辰丷
Freigeben: 2023-03-28 07:10:02
Original
1765 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich die detaillierte Erklärung des Passwort-Hashings in PHP vor. Interessierte Freunde können darauf zurückgreifen. Ich hoffe, dass er für alle hilfreich ist.

Wenn Sie immer noch die MD5-Verschlüsselung verwenden, wird empfohlen, einen Blick auf die folgenden Methoden zur Passwortverschlüsselung und -überprüfung zu werfen.

Sehen Sie sich zunächst ein einfaches Passwort-Hashing-Beispiel an:

<?php

//require &#39;password.php&#39;;
/**
 * 正确的密码是secret-password
 * $passwordHash 是hash 后存储的密码
 * password_verify()用于将用户输入的密码和数据库存储的密码比对。成功返回true,否则false
 */
$passwordHash = password_hash(&#39;secret-password&#39;, PASSWORD_DEFAULT);
echo $passwordHash;
if (password_verify(&#39;bad-password&#39;, $passwordHash)) {
  // Correct Password
  echo &#39;Correct Password&#39;;
} else {
  echo &#39;Wrong password&#39;;
  // Wrong password
}
Nach dem Login kopieren

unten Der Code stellt eine vollständig simulierte Benutzerklasse bereit, in der mithilfe von Passwort-Hashing das Passwort des Benutzers sicher verarbeitet werden kann und sich ändernde Sicherheitsanforderungen in der Zukunft unterstützt.

<?php
class User
{
  // Store password options so that rehash & hash can share them:
  const HASH = PASSWORD_DEFAULT;
  const COST = 14;//可以确定该算法应多复杂,进而确定生成哈希值将花费多长时间。(将此值视为更改算法本身重新运行的次数,以减缓计算。)

  // Internal data storage about the user:
  public $data;

  // Mock constructor:
  public function __construct() {
    // Read data from the database, storing it into $data such as:
    // $data->passwordHash and $data->username
    $this->data = new stdClass();
    $this->data->passwordHash = &#39;dbd014125a4bad51db85f27279f1040a&#39;;
  }

  // Mock save functionality
  public function save() {
    // Store the data from $data back into the database
  }

  // Allow for changing a new password:
  public function setPassword($password) {
    $this->data->passwordHash = password_hash($password, self::HASH, [&#39;cost&#39; => self::COST]);
  }

  // Logic for logging a user in:
  public function login($password) {
    // First see if they gave the right password:
    echo "Login: ", $this->data->passwordHash, "\n";
    if (password_verify($password, $this->data->passwordHash)) {
      // Success - Now see if their password needs rehashed
      if (password_needs_rehash($this->data->passwordHash, self::HASH, [&#39;cost&#39; => self::COST])) {
        // We need to rehash the password, and save it. Just call setPassword
        $this->setPassword($password);
        $this->save();
      }
      return true; // Or do what you need to mark the user as logged in.
    }
    return false;
  }
}
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, er wird für das Studium aller hilfreich sein.


Verwandte Empfehlungen:

Auth verwendet Salt und Passwort für Benutzerauthentifizierungsbeispiele

Detaillierte Erklärung von Laravel mit Salt und PasswortAuthentifizierung durch Ändern von Auth

Ändern von Laravel Auth mit Salt und Passwort Ausführliche Erklärung zur Authentifizierung von Benutzern

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der Passwortsicherheit im PHP Password Hashing. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage