PHP-Sicherheitsfunktion: strip_tags, filter_var, Md5 und sha1
⚡ Intelligente Zusammenfassung
PHP-Sicherheit schützt Webanwendungen vor Angreifern und unachtsamen Eingaben durch Validierung, Bereinigung und sichere Speicherung von Daten. Diese Anleitung behandelt die wichtigsten Bedrohungen und zeigt anschließend die Funktionen `strip_tags`, `filter_var` und `esca`.pingund moderne Passwort-Hashing-Verfahren mit password_hash zum Schutz vor XSS, SQL-Injection und gestohlenen Zugangsdaten.

Mögliche Sicherheitsbedrohungen
Grundsätzlich gibt es zwei Gruppen von Personen, die Ihr System angreifen können:
- Hacker – mit der Absicht, sich Zugriff auf nicht autorisierte Daten zu verschaffen oder die Anwendung zu stören
- Benutzer können versehentlich falsche Parameter in Formularen eingeben, was negative Auswirkungen auf eine Website oder Webanwendung haben kann.
Vor den folgenden Angriffsarten müssen wir uns in Acht nehmen.
SQL Injection – Bei dieser Art von Angriff wird schädlicher Code angehängt an SQL Aussagen.
Dies geschieht entweder mithilfe von Benutzereingabeformularen oder URLs, die Variablen verwenden.
Der angehängte Code kommentiert die Bedingung in der WHERE-Klausel einer SQL-Anweisung aus. Der angehängte Code kann außerdem:
- Fügen Sie eine Bedingung ein, die immer wahr ist
- Daten aus einer Tabelle löschen
- Daten in einer Tabelle aktualisieren
Diese Art von Angriff wird normalerweise verwendet, um sich unbefugten Zugriff auf eine Anwendung zu verschaffen.
Cross-Site-Scripting (XSS) – Bei dieser Art von Angriff wird schädlicher Code eingeschleust, normalerweise JavaSkript. Dies geschieht mithilfe von Benutzereingabeformularen wie Kontaktformularen und Kommentarformularen. Dies dient folgenden Zwecken:
- Rufen Sie vertrauliche Informationen ab, z Cookie-Daten
- Leiten Sie den Benutzer auf eine andere Seite weiter URL.
Weitere Bedrohungen können PHP-Code-Injection, Shell-Injection, Email-Injection und die Offenlegung von Skriptquellcode umfassen.
Best Practices für die PHP-Anwendungssicherheit
Betrachten wir nun einige der besten Sicherheitspraktiken für PHP, die wir bei der Entwicklung berücksichtigen müssen.ping unsere Anwendungen.
PHP-Strip_tags
Die Funktion strip_tags entfernt HTML-Code. JavaSkriptoder PHP-Tags aus einer Zeichenkette.
Diese Funktion ist nützlich, wenn wir unsere Anwendung vor Angriffen wie Cross-Site-Scripting schützen müssen.
Betrachten wir eine Anwendung, die Kommentare von Nutzern akzeptiert.
<?php $user_input = "Your site rocks"; echo "<h4>My Commenting System</h4>"; echo $user_input; ?>
Vorausgesetzt, Sie haben comments.php im Ordner phptuts gespeichert, navigieren Sie zu URL http://localhost/phptuts/comments.php
Nehmen wir an, Sie erhalten folgende Benutzereingabe: alert(‘Your site sucks!’);
<?php $user_input = "<script>alert(0);</script>"; echo "<h4>My Commenting System</h4>"; echo $user_input; ?>
Navigieren Sie zu URL http://localhost/phptuts/comments.php
Lassen Sie uns nun unsere Anwendung mithilfe der Funktion strip_tags vor solchen Angriffen schützen.
<?php $user_input = "<script>alert(0);</script>"; echo strip_tags($user_input); ?>
Navigieren Sie zu URL http://localhost/phptuts/comments.php
PHP filter_var-Funktion
Die Funktion filter_var wird zum Validieren und Bereinigen von Daten verwendet.
Bei der Validierung wird überprüft, ob die Daten vom richtigen Typ sind. Eine numerische Validierungsprüfung für eine Zeichenfolge gibt ein falsches Ergebnis zurück.
Durch die Sanierung werden illegale Zeichen aus a entfernt Schnur.
Die vollständige Referenz finden Sie unter diesem Link: filter_var
Der folgende Code dient dem Kommentarsystem. Er verwendet die Funktion filter_var und die Konstante FILTER_SANITIZE_STRIPPED, um Tags zu entfernen.
<?php $user_input = "<script>alert(0);</script>"; echo filter_var($user_input, FILTER_SANITIZE_STRIPPED); ?>
Ausgang:
alert('Your site sucks!');
Hinweis: Die Funktion FILTER_SANITIZE_STRIPPED (ein Alias für FILTER_SANITIZE_STRING) ist ab PHP 8.1 veraltet. Verwenden Sie für neuen Code strip_tags() oder, für eine sichere Darstellung, htmlspecialchars().
PHP mysqli_real_escape_string
Die Funktion mysqli_real_escape_string wird verwendet, um eine Anwendung vor SQL-Injection zu schützen.
Nehmen wir an, wir haben die folgende SQL-Anweisung zur Validierung der Benutzer-ID und des Passworts.
<?php SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass'; ?>
Ein böswilliger Benutzer kann sich einloggen ' ODER 1 = 1 — im Feld für die Benutzer-ID und im Feld für das Passwort 1234. Nun zum Authentifizierungsmodul.
<?php $uid = "0$uid1$pwd';"; echo $sql; ?>
Das Endergebnis wird sein:
SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';
HIER,
- „WHERE uid = ”“ prüft, ob eine Benutzer-ID leer ist.
- „' ODER 1 = 1“ ist eine Bedingung, die immer wahr sein wird.
- „–“ kommentiert den Teil aus, der das Passwort überprüft.
Die obige Abfrage gibt alle Benutzer zurück. Um unser Anmeldemodul abzusichern, verwenden wir nun die Funktion `mysqli_real_escape_string`. Beachten Sie, dass diese Funktion im realen Code die Datenbankverbindung als erstes Argument benötigt.
<?php $uid = mysqli_real_escape_string($conn, "0$uid1$pwd';"; echo $sql; ?>
Der obige Code erzeugt folgende Ausgabe:
SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';
Hinweis: Das zweite einfache Anführungszeichen wurde maskiert, daher wird es als Teil der Benutzerkennung behandelt und das Passwort wird nicht auskommentiert.
Best Practice: Köderping Das hilft zwar, aber parametrisierte vorbereitete Anweisungen in mysqli oder PDO sind die empfohlene Verteidigung gegen SQL-Injection, da die Daten niemals in den Abfragetext eingemischt werden.
PHP Md5 und PHP sha1
MD5 ist die Abkürzung für Message Digest 5 und SHA1 die Abkürzung für Secure Hash Algorithm 1. Beide sind Einweg-Hashfunktionen.
Der folgende Code zeigt die Implementierung von md5 und sha1.
<?php echo "MD5 Hash: " . md5("password"); echo "SHA1 Hash: " . sha1("password"); ?>
Vorausgesetzt, Sie haben die Datei hashes.php im Ordner phptuts gespeichert, navigieren Sie zu folgendem Pfad: URL.
Wichtig: MD5 und SHA1 sind schnelle, ungesalzene Hashfunktionen und sind wird nicht mehr als sicher für die Speicherung von Passwörtern angesehen.Da sie mit moderner Hardware und Rainbow-Tabellen schnell geknackt werden können, verwenden Sie sie nur für nicht sicherheitsrelevante Prüfsummen und nutzen Sie für Passwörter die unten beschriebene Methode.
Wie man Passwörter in PHP sicher hasht
Für die Passwortspeicherung bietet PHP die Funktionen `password_hash` und `password_verify`. Diese verwenden einen langsamen, gesalzenen Algorithmus (standardmäßig `bcrypt`), sodass jeder Hash einzigartig und schwer zu knacken ist, selbst wenn Ihre Datenbank gestohlen wird.
<?php // Hash a password before storing it in the database $hash = password_hash("mypassword", PASSWORD_DEFAULT); // Verify the password when the user logs in if (password_verify("mypassword", $hash)) { echo "Password is valid"; } else { echo "Invalid password"; } ?>
- password_hash() Erzeugt einen gesalzenen Hash zur Speicherung in der Datenbank; PASSWORD_DEFAULT sorgt dafür, dass der aktuell empfohlene Algorithmus beibehalten wird.
- Passwortverifizierung() Prüft einen Anmeldeversuch anhand des gespeicherten Hashwerts, ohne diesen jemals zu entschlüsseln.
Da Salt und Algorithmus im Hash gespeichert sind, müssen Sie diese nie selbst verwalten. Dies ist die korrekte und zukunftssichere Methode, Passwörter in PHP zu handhaben.




