In der Webentwicklung ist die Benutzereingabe die häufigste und am einfachsten angegriffene Eingabe. Um die Sicherheit der Benutzereingabebereich zu verbessern, bietet PHP viele praktische Funktionen, darunter filter_input () und crypt () zwei sehr wichtige Sicherheitstools. In diesem Artikel wird vorgestellt, wie diese beiden Funktionen in Kombination verwendet werden, um gängige Angriffsmethoden wie XSS (Cross-Site-Skriptangriff) und Kennwortverletzung effektiv zu verhindern.
filter_input () ist eine integrierte Funktion in PHP, die externe Eingänge erhält und filtert, z. B. Post oder Daten in einem Formular. Es kann die von den Benutzern eingereichten Daten effektiv vorarbeiten, um zu verhindern, dass bösartige Daten in die Anwendungslogikschicht eingeben. Zum Beispiel:
$username = filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING);
Der Zweck dieser Codezeile besteht darin, Benutzername- Parameter aus der Postanforderung zu erhalten und HTML-Tags und Sonderzeichen aus dem Sachpunkte zu entfernen, um Skriptangriffe mit Querplätzen zu verhindern.
Sichere Speicherung von Benutzerkennwörtern ist ein Problem, das Entwickler ernst nehmen müssen. Die von PHP bereitgestellte Crypt () -Funktion unterstützt eine Vielzahl von Verschlüsselungsalgorithmen und die empfohlene Verwendung des Blowfish -Algorithmus (identifiziert durch den Salzwert, beginnend mit $ 2y $ ). Das verschlüsselte Passwort ist schwer zu knacken, und selbst wenn die Datenbank durchgesickert ist, kann der Angreifer das ursprüngliche Passwort nicht leicht wiederherstellen.
Beispiel Verwendung:
$salt = '$2y$10$' . substr(str_replace('+', '.', base64_encode(random_bytes(22))), 0, 22);
$hashedPassword = crypt($password, $salt);
Im obigen Code wird Random_Bytes () verwendet, um eine zufällige Zeichenfolge mit hoher Intensität zu generieren, um sicherzustellen, dass der generierte Chiffretext auch dann unterschiedlich ist, wenn das Kennwort jedes Benutzers gleich ist.
Die Verwendung von Filter_Input () und Crypt () kann einen sicheren Datenverarbeitungsprozess festlegen:
Filtern Sie zuerst die Benutzereingabe, um die XSS und die Code -Injektion zu verhindern.
Verwenden Sie dann Crypt (), um das Passwort zu verschlüsseln und zu speichern, um zu verhindern, dass das Plain -Text -Passwort durchgesickert ist.
Schließlich werden nur das verschlüsselte Passwort und Benutzername in der Datenbank gespeichert.
Dieser Verarbeitungsprozess kann eine Reihe gemeinsamer Webangriffe effektiv verhindern und eine solide Sicherheitsgrundlage für die Website bieten.
Bei der Anmeldung müssen Sie nur CryPT () verwenden, um das vom Benutzer übermittelte Kennwort mit dem verschlüsselten Passwort in der Datenbank zu vergleichen:
$inputPassword = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_STRING);
$storedHash = 'Passwort -Hash -Wert aus der Datenbank entnommen';
if (crypt($inputPassword, $storedHash) === $storedHash) {
echo "Passwortüberprüfung bestanden";
} else {
echo "Fehlerkennwort";
}
Diese Verifizierungsmethode ist sicher und Standard und erfordert nicht, dass das Kennwort in Klartext wiederhergestellt wird.
Durch Kombination von Filter_Input () und Crypt () kann die Sicherheit der Benutzereingabebereich der Website erheblich verbessert werden. filter_input () ist für die Filterung verantwortlich, um böswillige Eingaben zu verhindern. Crypt () ist für die Verschlüsselung verantwortlich, um Kennwortleckage zu verhindern. Diese beiden Funktionen sind beim Aufbau eines sicheren Anmeldesystems und eines Benutzerverwaltungssystems unverzichtbar. Entwickler sollten gute Gewohnheiten für die Verwendung dieser Funktionen entwickeln, um Benutzer und die Sicherheit des Systems zu schützen.