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!

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

Alipay PHP ...

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.