suchen
HeimBackend-EntwicklungPHP-TutorialHashing -Passwörter mit der PHP 5.5 -Passwort -Hashing -API

Hashing Passwords with the PHP 5.5 Password Hashing API

Kernpunkte

  • PHP 5.5 Kennwort-Hash-API vereinfacht das Kennworthashing mit vier Funktionen: password_hash() für Hashing-Passwörter, password_verify() für die Überprüfung von Passwörtern mit ihren Hash-Werten, password_needs_rehash() für die Überprüfung, ob Passwörter erneut wiedergegeben werden müssen, password_get_info() Wird verwendet, um den Namen des Hash -Algorithmus und verschiedene Optionen im Hashing -Prozess zurückzugeben.
  • Diese API verwendet standardmäßig den Bcrypt -Algorithmus und behandelt automatisch die Erzeugung von Salzwerten, ohne dass Entwickler sie bereitstellen müssen. Entwickler können jedoch weiterhin ihre eigenen Salz- oder Kostenwerte bereitstellen, indem sie einen dritten Parameter an die password_hash() -Funktion übergeben.
  • Diese API wird als sehr sicher angesehen, wird jedoch empfohlen, sie als Teil einer umfassenden Sicherheitsrichtlinie zu verwenden. Entwickler, die PHP 5.3.7 oder höher verwenden, können eine Bibliothek namens password_compat verwenden, die die API emuliert und sich automatisch selbst deaktiviert, nachdem die PHP -Version auf 5.5 aktualisiert wurde.

Die Verwendung von BCrypt wird derzeit als das beste Passwort -Hashing -Praxis anerkannt, aber viele Entwickler verwenden immer noch ältere und schwächere Algorithmen wie MD5 und SHA1. Einige Entwickler verwenden beim Hashing nicht einmal Salz. Die neue Hash -API in PHP 5.5 soll Bcrypt aufmerksam machen und gleichzeitig ihre Komplexität verstecken. In diesem Artikel werde ich die Grundlagen der Verwendung der PHP New Hash API behandeln. Die neue Passwort -Hash -API enthält vier einfache Funktionen:

  • password_hash() - Wird verwendet, um das Passwort zu haben.
  • password_verify() - Wird verwendet, um Passwörter basierend auf ihrem Hash -Wert zu überprüfen.
  • password_needs_rehash() - Wird beim Wiederaufnehmen des Passworts verwendet.
  • password_get_info() - Gibt den Namen des Hashing -Algorithmus und die verschiedenen Optionen zurück, die im Hashing -Prozess verwendet werden.

password_hash()

Obwohl die crypt() -Funktion sicher ist, denken viele Menschen, dass sie zu komplex und fehleranfällig ist. Dann verwenden einige Entwickler schwache Salz und schwache Algorithmen, um Hashes zu erzeugen, wie:

<?php $hash = md5($password . $salt); // 可行,但危险

Die password_hash() -Funktion vereinfacht jedoch unsere Arbeit und unser Code kann sicher gehalten werden. Wenn Sie ein Hash -Passwort benötigen, geben Sie es einfach der Funktion an, und es gibt einen Hash -Wert zurück, der in der Datenbank gespeichert werden kann.

<?php $hash = md5($password . $salt); // 可行,但危险

Das ist es! Der erste Parameter ist die Kennwortzeichenfolge, und der zweite Parameter gibt den Algorithmus an, der zum Generieren des Hash angewendet wird. Der aktuelle Standardalgorithmus ist Bcrypt, aber manchmal kann es in Zukunft einen leistungsstärkeren Algorithmus als Standardalgorithmus hinzufügen und größere Zeichenfolgen erzeugen. Wenn Sie in Ihrem Projekt PASSWORD_DEFAULT verwenden, speichern Sie den Hash in einer Spalte mit einer Kapazität von mehr als 60 Zeichen. Das Einstellen der Spaltengröße auf 255 kann eine gute Wahl sein. Sie können auch PASSWORD_BCRYPT als zweiter Parameter verwenden. In diesem Fall ist das Ergebnis immer 60 Zeichen lang. Hier ist wichtig, dass Sie keine Salzwert- oder Kostenparameter bereitstellen müssen. Die neue API wird all dies für Sie übernehmen. Salz ist Teil des Hashs, also müssen Sie es nicht separat aufbewahren. Wenn Sie Ihr eigenes Salz (oder Kosten) bereitstellen möchten, können Sie dies tun, indem Sie einen dritten Parameter (ein Optionsarray) an die Funktion übergeben.

<?php $hash = password_hash($password, PASSWORD_DEFAULT);

Auf diese Weise können Sie immer die neuesten Sicherheitsmaßnahmen anwenden. Wenn PHP später beschließt, einen leistungsstärkeren Hashing -Algorithmus zu implementieren, kann Ihr Code ihn nutzen.

password_verify()

Jetzt, da Sie gelernt haben, wie man mit der neuen API Hashes generiert, sehen wir sehen, wie Sie Ihr Passwort überprüfen. Denken Sie daran, dass Sie den Hash in der Datenbank speichern, aber Sie erhalten ein einfaches Textkennwort, wenn sich der Benutzer anmeldet. Die password_verify() -Funktion nimmt ein einfaches Textkennwort und eine Hash -Zeichenfolge als ihre beiden Parameter. Gibt true zurück, wenn der Hash mit dem angegebenen Passwort übereinstimmt.

<?php $options = [
    'salt' => custom_function_for_salt(), //编写您自己的代码以生成合适的盐
    'cost' => 12 // 默认成本为 10
];
$hash = password_hash($password, PASSWORD_DEFAULT, $options);

Denken Sie daran, dass Salz Teil des Hash -Passworts ist, weshalb wir es hier nicht getrennt angeben.

password_needs_rehash()

Was soll ich tun, wenn ich die Salz- und Kostenparameter der Hash -Zeichenfolge ändern muss? Dies ist ein Problem, da Sie möglicherweise entscheiden, die Sicherheit zu verbessern, indem Sie stärkere Salz- oder größere Kostenparameter hinzufügen. Darüber hinaus kann PHP die Standardimplementierung des Hashing -Algorithmus ändern. In all diesen Fällen möchten Sie das vorhandene Passwort neu aufbauen. password_needs_rehash()

hilft zu überprüfen, ob ein bestimmter Hash einen bestimmten Algorithmus implementiert und beim Erstellen bestimmte Optionen (z. B. Kosten und Salz) verwendet.

<?php if (password_verify($password, $hash)) {
    // 成功!
} else {
    // 无效的凭据
}

Denken Sie daran, dass Sie dies tun müssen, wenn ein Benutzer versucht, sich auf Ihrer Website anzumelden, dies nur der Zeitpunkt ist, in dem Sie auf Ihr Klartextkennwort zugreifen können.

password_get_info()

password_get_info() akzeptiert einen Hash und gibt ein assoziatives Array mit drei Elementen zurück:

  • algo - eine Konstante, die einen bestimmten Algorithmus identifiziert
  • algoName - Der Name des verwendeten Algorithmus
  • options - Verschiedene Optionen, die beim Generieren von Hash
  • verwendet werden

Schlussfolgerung

Die neue Kennwort -Hash -API ist einfacher zu verwenden als die Funktion crypt(). Wenn Ihre Website derzeit auf PHP 5.5 ausgeführt wird, empfehle ich dringend, die neue Hash -API zu verwenden. Diejenigen, die PHP 5.3.7 (oder später) verwenden, können eine Bibliothek namens password_compat verwenden, die die API emuliert und sich automatisch selbst deaktiviert, nachdem die PHP -Version auf 5.5 aktualisiert wurde.

PHP 5.5 Kennwort Hash API FAQ (FAQ)

Was ist die PHP 5.5 -Passwort -Hash -API und warum ist sie wichtig?

PHP 5.5 Kennwort -Hash -API ist eine Funktion in PHP 5.5 und später die Entwickler eine einfache Möglichkeit, Hash und Passwörter auf sichere Weise zu überprüfen. Es ist wichtig, weil es hilft, sensible Benutzerdaten zu schützen. Wenn die Datenbank gehackt wird, sind Hash -Kennwörter schwerer zu knacken als Klartextkennwörter. Die API verwendet standardmäßig die leistungsstarke Hash -Funktion BCrypt und behandelt automatisch die Erzeugung von Salzwerten, wodurch es den Entwicklern die Implementierung der sicheren Kennwortverarbeitung erleichtert.

password_hash Wie funktioniert die Funktion?

Die Funktion

password_hash ist Teil der PHP 5.5 -Passwort -Hash -API. Es empfängt ein einfaches Textkennwort und einen Hash -Algorithmus als Eingabe und gibt ein Hash -Passwort zurück. Die Funktion generiert automatisch und wendet vor dem Hashing einen zufälligen Salzwert auf das Passwort an. Dieser Salzwert ist im zurückgegebenen Hash enthalten, sodass es nicht erforderlich ist, ihn separat zu speichern.

password_verify Was ist der Zweck der Funktion?

password_verify Funktion wird verwendet, um Kennwörter basierend auf Hash -Passwörtern zu überprüfen. Es empfängt ein einfaches Textkennwort und ein Hash -Passwort als Eingabe. Diese Funktion extrahiert Salzwerte und Hashing -Algorithmen aus dem Hashed -Kennwort, wendet sie auf das Klartextkennwort an und vergleicht dann die Ergebnisse mit dem ursprünglichen Hashed -Kennwort. Wenn es übereinstimmt, gibt die Funktion true zurück und gibt an, dass das Kennwort korrekt ist.

Wie ist die Sicherheit der PHP 5.5 -Passwort -Hash -API?

PHP 5.5 Kennwort -Hash -API wird als sehr sicher angesehen. Es verwendet standardmäßig den Bcrypt -Hashing -Algorithmus, was eine leistungsstarke Hashing -Funktion ist. Die API generiert automatisch einen zufälligen Salzwert für jedes Passwort, wodurch Regenbogentabellenangriffe verhindern. Wie bei allen Sicherheitsmaßnahmen ist es jedoch nicht narrensicher und sollte als Teil einer umfassenden Sicherheitsrichtlinie verwendet werden.

Kann ich in der Funktion password_hash benutzerdefiniertes Salz verwenden?

Ja, Sie können in der Funktion password_hash benutzerdefiniertes Salz verwenden, dies wird jedoch nicht empfohlen. Diese Funktion generiert automatisch einen zufälligen Salzwert für jedes Kennwort, was normalerweise sicherer als benutzerdefiniertes Salz ist. Wenn Sie ein benutzerdefiniertes Salz verwenden, sollte es eine zufällige Zeichenfolge von mindestens 22 Zeichen sein.

password_hash Was sind die Kostenparameter in der Funktion?

password_hash Die Kostenparameter in der Funktion bestimmen die Rechenkosten des Hash. Höhere Kosten machen Hash sicherer, aber auch langsamere Berechnungen. Die Standardkosten betragen 10, was für die meisten Anwendungen ein gutes Gleichgewicht zwischen Sicherheit und Leistung ist.

Wie kann ich überprüfen, ob das Hash -Passwort neu aufgewaschen werden muss?

Sie können die Funktion password_needs_rehash verwenden, um zu prüfen, ob das Hash -Kennwort neu aufgehoben werden muss. Diese Funktion empfängt Hash -Passwort, Hash -Algorithmus und optionale Kosten als Eingabe. Wenn das Hash -Passwort mit einem anderen Algorithmus oder einer anderen Kosten erstellt wird, gibt es True zurück, was darauf hinweist, dass es wieder aufgewendet werden sollte.

Kann ich die PHP 5.5 -Passwort -Hash -API mit älteren Versionen von PHP verwenden?

PHP 5.5 Kennwort -Hash -API ist nur in PHP 5.5 und später verfügbar. Es gibt jedoch eine Kompatibilitätsbibliothek, die die gleiche Funktionalität für PHP 5.3.7 und höher bietet.

Was passiert, wenn ich das Kennwort mit dem konstanten Hashing PASSWORD_DEFAULT habe und dann der Standardalgorithmus in zukünftigen Versionen von PHP ändert?

Wenn Sie das Kennwort mithilfe der PASSWORD_DEFAULT -Konstante und dann des Standardalgorithmus in zukünftigen Versionen von PHP -Änderungen haben, funktioniert die Funktion password_hash wie erwartet weiter. Das Hashed -Kennwort enthält Informationen zum verwendeten Algorithmus, sodass die password_verify -Funktion das Kennwort weiterhin korrekt überprüfen kann.

Kann ich die PHP 5.5-Passwort-Hash-API mit Nicht-ASCII-Passwörtern verwenden?

Ja, Sie können die PHP 5.5-Passwort-Hash-API mit Nicht-ASCII-Passwörtern verwenden. Die Funktionen password_hash und password_verify verwenden Binärdaten, sodass sie Passwörter für jeden Zeichen verarbeiten können. Sie sollten jedoch beachten, dass verschiedene Systeme möglicherweise nicht-ASCII-Zeichen unterschiedlich umgehen. Daher ist es eine gute Idee, sie zu normalisieren, bevor Sie das Passwort haben.

Das obige ist der detaillierte Inhalt vonHashing -Passwörter mit der PHP 5.5 -Passwort -Hashing -API. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
Wie identifiziert PHP die Sitzung eines Benutzers?Wie identifiziert PHP die Sitzung eines Benutzers?May 01, 2025 am 12:23 AM

PhpidentifiesAsersSSessionUsingSSessionCookiesAndSessionIDs.1) WHANE Session_Start () iscalled, phpGeneratesAuniqueSessionIDStoredInacookienMamePhpSsidontonTheusers.2) thisidallowStoretrieVessionDataFromtheServer.

Was sind einige Best Practices für die Sicherung von PHP -Sitzungen?Was sind einige Best Practices für die Sicherung von PHP -Sitzungen?May 01, 2025 am 12:22 AM

Die Sicherheit von PHP -Sitzungen kann durch folgende Maßnahmen erreicht werden: 1. Verwenden Sie Session_regenerate_id (), um die Sitzungs -ID zu regenerieren, wenn sich der Benutzer anmeldet oder eine wichtige Operation ist. 2. Verschlüsseln Sie die Übertragungssitz -ID durch das HTTPS -Protokoll. A. Verwenden Sie Session_save_path (), um das sichere Verzeichnis anzugeben, um Sitzungsdaten zu speichern und Berechtigungen korrekt festzulegen.

Wo werden standardmäßig PHP -Sitzungsdateien gespeichert?Wo werden standardmäßig PHP -Sitzungsdateien gespeichert?May 01, 2025 am 12:15 AM

PhpSessionFilesArestoredinTHedRectorySpecifiedBySession.save_path, typischerweise/tmponunix-likesystemsorc: \ windows \ temponwindows

Wie rufen Sie Daten aus einer PHP -Sitzung ab?Wie rufen Sie Daten aus einer PHP -Sitzung ab?May 01, 2025 am 12:11 AM

ToretriedatafromaphpSession, startThesessionwithSession_start () und AccessvariableSthe $ _SessionArray.Fexample: 1) StartTheSession: session_start (). 2) Abgerufen: $ username = $ _ Session ['username'];

Wie können Sie Sitzungen verwenden, um einen Einkaufswagen zu implementieren?Wie können Sie Sitzungen verwenden, um einen Einkaufswagen zu implementieren?May 01, 2025 am 12:10 AM

Zu den Schritten zum Erstellen eines effizienten Einkaufswagensystems mithilfe von Sitzungen gehören: 1) Verstehen Sie die Definition und Funktion der Sitzung. Die Sitzung ist ein serverseitiger Speichermechanismus, der verwendet wird, um den Benutzerstatus über Anforderungen hinweg aufrechtzuerhalten. 2) Implementieren Sie das grundlegende Sitzungsmanagement, z. B. das Hinzufügen von Produkten in den Einkaufswagen; 3) auf die fortschrittliche Nutzung ausdehnen und das Produktmengenmanagement und die Löschung der Produktmenge unterstützen; 4) Optimieren Sie Leistung und Sicherheit, indem Sie Sitzungsdaten fortsetzen und sichere Sitzungskennungen verwenden.

Wie erstellen und verwenden Sie eine Schnittstelle in PHP?Wie erstellen und verwenden Sie eine Schnittstelle in PHP?Apr 30, 2025 pm 03:40 PM

Der Artikel erläutert, wie Schnittstellen in PHP erstellt, implementiert und verwendet werden und sich auf ihre Vorteile für die Organisation von Code und die Wartbarkeit konzentriert.

Was ist der Unterschied zwischen Crypt () und Passage_hash ()?Was ist der Unterschied zwischen Crypt () und Passage_hash ()?Apr 30, 2025 pm 03:39 PM

In dem Artikel werden die Unterschiede zwischen CryPT () und Passage_hash () in PHP für Passwort -Hashing erörtert und sich auf ihre Implementierung, Sicherheit und Eignung für moderne Webanwendungen konzentriert.

Wie können Sie Cross-Site Scripting (XSS) in PHP verhindern?Wie können Sie Cross-Site Scripting (XSS) in PHP verhindern?Apr 30, 2025 pm 03:38 PM

In Artikel werden in PHP durch Eingabevalidierung, Ausgabecodierung und Verwendung von Tools wie OWASP ESAPI und HTML-Reinigungsmittel die Verhinderung des Cross-Site-Skripts (XSS) erläutert.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SAP NetWeaver Server-Adapter für Eclipse

SAP NetWeaver Server-Adapter für Eclipse

Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.