Eingaben in PHP säubern
-
Bereinigung von HTML-Eingaben mit
htmlentities()
in PHP -
HTML-Eingabesanitisierung mit
filter_var()
in PHP - SQL-Queries Sanitization in PHP
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 sindENT_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 sindUTF-8
,ISO-8859-1
usw.doubleEncode
: Dies ist ein optionaler Parameter, der angibt, ob vorhandene HTML-Entitäten kodiert werden oder nicht. Der Standardwert isttrue
, 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:
<a href="https://www.google.com">Go to google.com</a>
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 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