PHP-Sicherheitsfunktion: strip_tags, filter_var, Md5 und sha1

Mรถgliche Sicherheitsbedrohungen

Im Grunde handelt es sich dabei um zwei Personengruppen, 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 โ€“ Sie geben mรถglicherweise unbeabsichtigt falsche Parameter in Formulare ein, 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 SQL Aussagen.

Dies geschieht entweder รผber Benutzereingabeformulare oder รผber URLs, die Variablen verwenden.

Der angehรคngte Code kommentiert die Bedingung in der WHERE-Klausel einer SQL-Anweisung. Der angehรคngte Code kann auch;

  • 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 โ€“ Diese Art von Angriff fรผgt schรคdlichen Code ein, normalerweise JavaSkript. Dies geschieht mithilfe von Benutzereingabeformularen wie Kontakt- und Kommentarformularen. Dies geschieht, um:

  • Rufen Sie vertrauliche Informationen ab, z Cookies-Daten
  • Leiten Sie den Benutzer zu einer anderen URL weiter.
  • Zu den weiteren Bedrohungen kรถnnen gehรถren: PHP-Code-Injektion, Shell-Injektion, E-Mail-Injektion, Offenlegung des Skript-Quellcodes usw.

Best Practices fรผr die PHP-Anwendungssicherheit

Schauen wir uns nun einige der Best Practices fรผr die PHP-Sicherheit an, die wir bei der Entwicklung unserer Anwendungen berรผcksichtigen mรผssen.

PHP-Strip_tags

Die Funktion โ€žstrip_tagsโ€œ entfernt HTML, JavaSkript oder PHP-Tags aus einem String.

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 Benutzern 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 zur URLhttp://localhost/phptuts/comments.php

PHP-Strip_tags

Nehmen wir an, Sie erhalten Folgendes als Benutzereingabe alert(โ€˜Your site sucks!โ€™);

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo "<h4>My Commenting System</h4>";

echo $user_input;

?>

Navigieren Sie zur URL http://localhost/phptuts/comments.php

PHP-Strip_tags

Lassen Sie uns nun unsere Anwendung mithilfe der Funktion โ€žstrip_tagsโ€œ vor solchen Angriffen schรผtzen.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo strip_tags($user_input);

?>

Navigieren Sie zur URL http://localhost/phptuts/comments.php

PHP-Strip_tags

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 Code ist fรผr das Kommentarsystem.

Es verwendet die Funktion filter_var und die Konstante FILTER_SANITIZE_STRIPPED, um Tags zu entfernen.

<?php

$user_input = "<script>alert('Your site sucks!');</script>";

echo filter_var($user_input, FILTER_SANITIZE_STRIPPED);

?>

Ausgang:

alert('Your site sucks!');

Funktion mysqli_real_escape_string Diese Funktion wird verwendet, um eine Anwendung vor SQL-Injection zu schรผtzen.

Nehmen wir an, wir haben die folgende SQL-Anweisung zum Validieren der Benutzer-ID und des Kennworts.

<?php
SELECT uid,pwd,role FROM users WHERE uid = 'admin' AND password = 'pass';
?>

Ein bรถswilliger Benutzer kann den folgenden Code in das Textfeld fรผr die Benutzer-ID eingeben. ' ODER 1 = 1 โ€” Und 1234 in das Textfeld fรผr das Kennwort Lassen Sie uns das Authentifizierungsmodul codieren

<?php

$uid = "' OR 1 = 1 -- ";

$pwd = "1234";

$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";

echo $sql;

?>

Das Endergebnis wird sein

SELECT uid,pwd,role FROM users WHERE uid = '' OR 1 = 1 -- ' AND password = '1234';

HIER,

  • โ€žSELECT * FROM users WHERE user_id =โ€œโ€œ testet auf eine leere Benutzer-ID
  • โ€ž'OR 1 = 1โ€œ ist eine Bedingung, die immer wahr sein wird
  • โ€žโ€“โ€œ kommentiert den Teil, der auf das Passwort prรผft.

Die obige Abfrage gibt alle Benutzer zurรผck. Verwenden wir jetzt die Funktion mysqli_real_escape_string, um unser Anmeldemodul zu sichern.

<?php

$uid = mysqli_real_escape_string("' OR 1 = 1 -- ");

$pwd = mysqli_real_escape_string("1234");

$sql = "SELECT uid,pwd,role FROM users WHERE uid = '$uid' AND password = '$pwd';";

echo $sql;

?>

Der obige Code wird ausgegeben

SELECT uid,pwd,role FROM users WHERE uid = '\' OR 1 = 1 -- ' AND password = '1234';

Hinweis Das zweite einfache Anfรผhrungszeichen wurde fรผr uns maskiert, es wird als Teil der Benutzer-ID behandelt und das Passwort wird nicht kommentiert.

PHP Md5 und PHP sha1

Md5 ist die Abkรผrzung fรผr Message Digest 5 und sha1 ist die Abkรผrzung fรผr Secure Hash Algorithm 1.

Sie werden beide zum Verschlรผsseln von Zeichenfolgen verwendet.

Sobald eine Zeichenfolge verschlรผsselt wurde, ist es mรผhsam, sie zu entschlรผsseln.

Md5 und sha1 sind sehr nรผtzlich beim Speichern von Passwรถrtern in der Datenbank.

Der folgende Code zeigt die Implementierung von md5 und sha1

<?php
echo "MD5 Hash: " . md5("password");
echo "SHA1 Hash: " . sha1("password");
?>

Angenommen, Sie haben die Datei hashes.php im Ordner phptuts gespeichert, navigieren Sie zur URL

PHP Md5 und PHP sha1

Wie Sie anhand der obigen Hashes sehen kรถnnen, kennt ein Angreifer, wenn er Zugriff auf Ihre Datenbank erhรคlt, immer noch nicht die Passwรถrter, mit denen er sich anmelden kann.

Zusammenfassung

  • Unter Sicherheit versteht man MaรŸnahmen, die zum Schutz einer Anwendung vor versehentlichen und bรถswilligen Angriffen ergriffen werden.
  • Die Funktion โ€žstrip_tagsโ€œ wird zum Entfernen von Tags wie z. B. verwendet aus Eingabedaten
  • Die Funktion filter_var validiert und bereinigt PHP-Eingabedaten
  • mysqli_real_escape_string wird verwendet, um SQL-Anweisungen zu bereinigen. Es entfernt schรคdliche Zeichen aus den Anweisungen
  • Sowohl MD5 als auch SHA1 werden zum Verschlรผsseln des Passworts verwendet.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: