Eingaben in PHP säubern

Shraddha Paghdar 22 Januar 2022
PHP
  1. Bereinigung von HTML-Eingaben mit htmlentities() in PHP
  2. HTML-Eingabesanitisierung mit filter_var() in PHP
  3. SQL-Queries Sanitization in PHP
Eingaben in PHP säubern

Benutzerdaten müssen in der Datenbank gespeichert werden, aber bevor wir sie in der Datenbank speichern, müssen wir sicherstellen, dass keine fehlerhaften Daten weitergegeben werden. andernfalls wird es die DB vermasseln. Dadurch wird die Integrität der Daten geschützt. Benutzer werden oft zwischen Bereinigung und Validierung verwechselt. Der einzige Unterschied zwischen ihnen besteht darin, dass die Validierung sicherstellt, dass die Daten das richtige Format haben oder nicht, während später sichergestellt wird, dass keine illegalen Zeichen in den Daten enthalten sind. Im heutigen Beitrag erfahren Sie, wie Sie die Eingabedaten in PHP bereinigen, bevor sie an die Datenbank (RDBMS/NoSQL) übergeben werden.

Die häufigsten Eingaben, die bereinigt werden müssen, sind HTML, Eingaben über SQL-Abfragen und Benutzerprofilinformationen.

Bereinigung von HTML-Eingaben mit htmlentities() in PHP

Es ist eine eingebaute Funktion von PHP, die alle Zeichen in HTML-Entitäten umwandelt. Sie können auch htmlspecialchars() verwenden, der einzige Unterschied zwischen diesen beiden Funktionen besteht darin, dass htmlspecialchars() die Sonderzeichen in HTML-Entities umwandelt, während htmlentities() alle Zeichen umwandelt.

Syntax von htmlentities() in PHP

htmlentities(string $string, $flags, $characterSet, boolean $doubleEncode);

Parameter

  • $string: Es ist ein obligatorischer Parameter, der Eingabedaten übernimmt, auf die eine Konvertierung durchgeführt werden soll.
  • $flags: Dies ist ein optionaler Parameter, der angibt, wie mit ungültiger Kodierung, Anführungszeichen und dem verwendeten Dokumenttyp umgegangen wird. Einige der Flags sind ENT_COMPAT, ENT_IGNORE, ENT_HTML5, ENT_NOQUOTES usw.
  • $characterSet: Dies ist ein optionaler Parameter, der angibt, welcher Zeichensatz verwendet werden soll. Einige der Zeichensätze sind UTF-8, ISO-8859-1 usw.
  • doubleEncode: Dies ist ein optionaler Parameter, der angibt, ob vorhandene HTML-Entitäten kodiert werden oder nicht. Der Standardwert ist true, wodurch alles konvertiert wird.

Rückgabewert

Die Ausgabe der obigen Funktion enthält einen konvertierten String. Es wird eine leere Zeichenkette zurückgegeben, wenn der Zeichenkettenparameter eine ungültige Codierung enthält, es sei denn, es sind Flags wie ENT_IGNORE oder ENT_SUBSTITUTE gesetzt.

Beispielcode:

<?php
    $str = '<a href="https://www.google.com">Go to google.com</a>';
    echo htmlentities($str);
?>

Ausgabe:

&lt;a href=&quot;https://www.google.com&quot;&gt;Go to google.com&lt;/a&gt;

HTML-Eingabesanitisierung mit filter_var() in PHP

Es handelt sich um eine integrierte Funktion von PHP, in der die Validierung und Bereinigung der Eingabedaten durchgeführt wird.

Syntax von filter_var() in PHP

filter_var($inputValue, $filterType);

Parameter

  • $inputValue: Es ist ein obligatorischer Parameter, der Eingabedaten aufnimmt, auf die die Filterprüfung angewendet wird.
  • $filterType: Es ist ein obligatorischer Parameter, der angibt, welche Filterprüfung auf Eingabedaten durchgeführt werden soll. Unterstützte Werte sind:
    • FILTER_VALIDATE_INT: Ob die Eingabedaten eine gültige Ganzzahl sind oder nicht.
    • FILTER_SANITIZE_STRING: Wenn die Eingabedaten eine gültige Zeichenkette sind oder nicht und entfernen Sie alle HTML-Tags aus einer EingabeZeichenkette.
    • FILTER_VALIDATE_IP: Ob die Eingabedaten eine gültige IP-Adresse sind oder nicht.
    • FILTER_SANITIZE_EMAIL: Ob die Eingabedaten eine gültige E-Mail-Adresse sind oder nicht. Filter var entfernt zuerst ungültige Zeichen und dann wird eine Validierung durchgeführt.

Rückgabewert

Gibt den gefilterten Wert zurück, wenn er erfolgreich übergeben wurde.

Beispielcode:

<?php
    $inputString = "<p>Hello World! Welcome to PHP tutorial</p>";
    $newstr = filter_var($inputString, FILTER_SANITIZE_STRING);
    echo $newstr. "\n";
?>

Ausgabe:

Hello World! Welcome to PHP tutorial

SQL-Queries Sanitization in PHP

Um SQL-Injection zu verhindern, sollten Entwickler immer PDO/MySQLi verwenden. PDO ist eine Datenbankabstraktionsschicht. PDO bereinigt und bettet externe Daten sicher in eine SQL-Abfrage ein und vermeidet die Art von Problemen. Bevor Sie Daten an die DB senden, bearbeiten Sie die Daten mit filter_var().

Beispielcode:

<?php
    $servername = "hostname";
    $username = "username";
    $password = "password";
    $dbname = "databaseName";
    $lastname = "doe";

    $connection = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $statement = $connection->prepare("SELECT id, email, firstname, lastname FROM Users WHERE lastname=:lastname");
    $statement->execute(['lastname' => $lastname]);

    $resultOuput = $statement->setFetchMode(PDO::FETCH_ASSOC);
?>
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn