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.