PHP-Filter werden zum Validieren und Filtern von Daten aus unsicheren Quellen, wie z. B. Benutzereingaben, verwendet.
PHP-Filter werden verwendet, um Daten aus unsicheren Quellen zu validieren und zu filtern.
Das Testen, Validieren und Filtern von Benutzereingaben oder benutzerdefinierten Daten sind wichtige Bestandteile jeder Webanwendung.
Die Filtererweiterungen von PHP sollen die Datenfilterung einfacher und schneller machen.
Fast alle Webanwendungen sind auf externen Input angewiesen. Diese Daten stammen in der Regel von Benutzern oder anderen Anwendungen (z. B. Webdiensten). Durch die Verwendung von Filtern können Sie sicherstellen, dass Ihre Anwendung den richtigen Eingabetyp erhält.
Sie sollten immer externe Daten filtern!
Die Eingabefilterung ist eines der wichtigsten Themen zur Anwendungssicherheit.
Was sind externe Daten?
Geben Sie Daten aus dem Formular ein
Kekse
Daten zu Webdiensten
Servervariablen
Ergebnisse der Datenbankabfrage
Um Variablen zu filtern, verwenden Sie eine der folgenden Filterfunktionen:
filter_var() – Filtert eine einzelne Variable durch einen angegebenen Filter
filter_var_array() – Filtert mehrere Variablen nach demselben oder unterschiedlichen Filtern
filter_input – nimmt eine Eingabevariable und filtert sie
filter_input_array – nimmt mehrere Eingabevariablen und filtert sie durch denselben oder verschiedene Filter
Im folgenden Beispiel validieren wir eine Ganzzahl mit der Funktion filter_var():
<?php $int = 123 ; if ( ! filter_var ( $int , FILTER_VALIDATE_INT ) ) { echo ( " Keine zulässige Ganzzahl " ) ; anders { echo ( " ist eine zulässige Ganzzahl " ) ; ?>
Der obige Code verwendet den Filter „FILTER_VALIDATE_INT“, um Variablen zu filtern.
Wenn wir versuchen, eine nicht ganzzahlige Variable (z. B. „123abc“) zu verwenden, lautet die Ausgabe: „Ganzzahl ist ungültig“.
Eine vollständige Liste der Funktionen und Filter finden Sie in unserem PHP-Filter-Referenzhandbuch.
Es gibt zwei Arten von Filtern:
Validierungsfilter:
Wird zur Validierung von Benutzereingaben verwendet
Strenge Formatierungsregeln (z. B. URL- oder E-Mail-Validierung)
Gibt bei Erfolg den erwarteten Typ zurück, bei Fehlschlag FALSE
Desinfektionsfilter:
Wird verwendet, um bestimmte Zeichen in einer Zeichenfolge zuzulassen oder zu verbieten
Keine Datenformatregeln
gibt immer einen String zurück
Optionen und Flags werden verwendet, um dem angegebenen Filter zusätzliche Filteroptionen hinzuzufügen.
Verschiedene Filter haben unterschiedliche Optionen und Flags.
Im folgenden Beispiel validieren wir eine Ganzzahl mithilfe von filter_var() mit den Optionen „min_range“ und „max_range“:
<?php $var = 300 ; $int_options = array ( „ Optionen “ => Array ( „ min_range “ => 0 , „ max_range “ => 256 ) ) ; if ( ! filter_var ( $var , FILTER_VALIDATE_INT , $int_options ) ) { echo ( " Keine zulässige Ganzzahl " ) ; anders { echo ( " ist eine zulässige ganze Zahl " ) ; ?>
Genau wie im obigen Code müssen Optionen in ein zugehöriges Array namens „Optionen“ eingefügt werden. Wenn Flags verwendet werden, müssen diese nicht in einem Array vorhanden sein.
Da die Ganzzahl „300“ ist und nicht im angegebenen Bereich liegt, lautet die Ausgabe des obigen Codes:
ist keine zulässige ganze Zahl
Eine vollständige Liste der Funktionen und Filter finden Sie in unserem PHP-Filter-Referenzhandbuch. Sie können die verfügbaren Optionen und Flags für jeden Filter sehen.
Versuchen wir, die Eingabe aus dem Formular zu validieren.
Als Erstes müssen wir bestätigen, dass die gesuchten Eingabedaten vorhanden sind.
Dann verwenden wir die Funktion filter_input(), um die Eingabedaten zu filtern.
Im folgenden Beispiel wird die Eingabevariable „email“ an die PHP-Seite übergeben:
<?php if ( ! filter_has_var ( INPUT_GET , „ email “ ) ) { echo ( " Kein E- Mail -Parameter " ) ; anders { Wenn ( ! filter_input ( INPUT_GET , " email " , FILTER_VALIDATE_EMAIL ) ) { Echo „ Keine gültige E- Mail “ } anders { Echo „ Es handelt sich um eine legitime E-Mail “ } } ?>
Im obigen Beispiel wird eine Eingabevariable (E-Mail) über die Methode „GET“ übergeben:
Prüfen Sie, ob eine „email“-Eingabevariable vom Typ „GET“ vorhanden ist.
Wenn die Eingabevariable vorhanden ist, prüfen Sie, ob es sich um eine gültige E-Mail-Adresse handelt
Versuchen wir, die vom Formular übergebene URL zu bereinigen.
Zunächst möchten wir bestätigen, dass die gesuchten Eingabedaten vorhanden sind.
Anschließend verwenden wir die Funktion filter_input(), um die Eingabedaten zu bereinigen.
Im folgenden Beispiel wird die Eingabevariable „url“ an die PHP-Seite übergeben:
<?phpif(!filter_has_var(INPUT_GET, "url")){ echo("Kein URL-Parameter");}else{ $url = filter_input(INPUT_GET, "url", FILTER_SANITIZE_URL); echo $url;}?>
Im obigen Beispiel wird eine Eingabevariable (URL) über die Methode „GET“ übergeben:
Überprüfen Sie, ob eine „url“-Eingabevariable vom Typ „GET“ vorhanden ist.
Wenn diese Eingabevariable vorhanden ist, bereinigen Sie sie (entfernen Sie unzulässige Zeichen) und speichern Sie sie in der Variablen $url
Wenn die Eingabevariable eine Zeichenfolge ähnlich dieser ist: „http://www.ruåånoøøob.com/“, sieht die bereinigte $url-Variable folgendermaßen aus:
Formulare bestehen in der Regel aus mehreren Eingabefeldern. Um wiederholte Aufrufe der Funktion filter_var oder filter_input zu vermeiden, können wir filter_var_array oder die Funktion filter_input_array verwenden.
In diesem Beispiel verwenden wir die Funktion filter_input_array(), um drei GET-Variablen zu filtern. Die empfangenen GET-Variablen sind ein Name, ein Alter und eine E-Mail-Adresse:
<?php $filters = Array ( „ name “ => Array ( " filter " => FILTER_SANITIZE_STRING ) , „ Alter “ => Array ( " filter " => FILTER_VALIDATE_INT , " Optionen " => Array ( „ min_range “ => 1 , „ max_range “ => 120 ) ) , „ E-Mail “ => FILTER_VALIDATE_EMAIL ) ; $ result = filter_input_array ( INPUT_GET , $filters ) ; ( ! $result [ " Alter " ] ) { echo ( " Alter muss zwischen 1 und 120 liegen.<br> " ) ; elseif ( ! $result [ " email " ] ) { echo ( " E-Mail ist illegal <br> " ) ; anders { echo ( " Eingabe korrekt " ) ; ?>
Das obige Beispiel verfügt über drei Eingabevariablen (Name, Alter und E-Mail), die über die Methode „GET“ übergeben werden:
Legt ein Array fest, das die Namen von Eingabevariablen und Filtern für die angegebenen Eingabevariablen enthält
Rufen Sie die Funktion filter_input_array() auf. Zu den Parametern gehören die GET-Eingabevariable und das gerade festgelegte Array
Überprüfen Sie, ob die Variablen „Alter“ und „E-Mail“ in der Variablen „$result“ unzulässige Eingaben enthalten. (Wenn eine unzulässige Eingabe vorliegt, ist die Eingabevariable nach Verwendung der Funktion filter_input_array() FALSE.)
Das zweite Argument der Funktion filter_input_array() kann ein Array oder die ID eines einzelnen Filters sein.
Wenn dieser Parameter die ID eines einzelnen Filters ist, filtert der angegebene Filter alle Werte im Eingabearray.
Wenn der Parameter ein Array ist, muss das Array den folgenden Regeln folgen:
Muss ein assoziatives Array sein, das Eingabevariablen enthält, die die Schlüssel des Arrays sind (z. B. die Eingabevariable „Alter“).
Der Wert dieses Arrays muss die ID des Filters oder ein Array sein, das den Filter, Flags und Optionen angibt
Mithilfe des Filters FILTER_CALLBACK können Sie eine benutzerdefinierte Funktion aufrufen und als Filter verwenden. Auf diese Weise haben wir die volle Kontrolle über die Datenfilterung.
Sie können Ihre eigene benutzerdefinierte Funktion erstellen oder eine vorhandene PHP-Funktion verwenden.
Geben Sie die Filterfunktion, die Sie verwenden möchten, auf die gleiche Weise wie die angegebene Option an. In einem assoziativen Array mit dem Namen „Optionen“.
Im folgenden Beispiel verwenden wir eine benutzerdefinierte Funktion, um alle „_“ in „.“ umzuwandeln:
<?php Funktion ConvertSpace ( $string ) { zurückkehren str_replace ( " _ " , " . " , $ string ) ; $string = " www_codercto_com! " ; echo filter_var ( $string , FILTER_CALLBACK , array ( " options " = > " convertSpace " ) ) ;
Das obige Beispiel konvertiert alle „_“ in „.“:
Erstellen Sie eine Funktion, die „_“ durch „.“ ersetzt.
Rufen Sie die Funktion filter_var() mit dem Filter FILTER_CALLBACK und dem Array auf, das unsere Funktion enthält