English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dieses Beispiel zeigt die Verwendung von htmlentities und htmlspecialchars für das Filtern von Eingaben in PHP. Hier ist eine Zusammenfassung, die alle zur Verfügung gestellt wird:
Filterung der Eingabe (d.h. alle Daten aus den aufgelisteten Datenquellen) bedeutet, unsichere Zeichen zu escapieren oder zu löschen. Filteren Sie die Eingabedaten unbedingt, bevor diese in der Speicherlayer der Anwendung erreichen. Dies ist die erste Verteidigungslinie. Wenn das Kommentarseitenformular der Website HTML akzeptiert, können Besucher standardmäßig ohne jede Einschränkung schädliche <script>-Tags in die Kommentare einfügen, wie folgt markiert:
<p> meine Test </p> <script>alert(123)</script>
Im obigen Beispiel. Wenn dieser Kommentar nicht gefiltert wird, könnte schädlicher Code in die Datenbank gespeichert und im Markenauszeichner der Website gerendert werden.
HTML
Wir können die Funktionen htmlentities oder htmlspecialchars verwenden, um HTML zu filtern und spezielle Zeichen in entsprechende HTML-Entitäten umzuwandeln.
Die Funktion htmlentities wandelt alle enthaltenen "HTML-Entitäten" in spezielle Zeichen um, z.B. Währungssymbole wie Euro und Pfund, Copyright-Symbole usw., htmlspecialchars escapiert nur bestimmte spezielle Zeichen, & " ' < >
Dies2Diese Funktion ist dumm, sie escapiert standardmäßig keine einfachen Anführungszeichen
$str='<a href="test.html" rel="external nofollow" >\'Testseite\'</a><script>alert(213)</script>'; //es gibt keine Escape für einfache Anführungszeichen echo $str; echo "<hr/">.PHP_EOL; echo htmlentities($str); echo "<hr/">.PHP_EOL; echo htmlspecialchars($str);
muss eingestellt werden2Ein Parameter ENT_QUOTES, spezifisch kann im PHP-Handbuch nachgelesen werden
echo htmlentities($str,ENT_QUOTES,'UTF-8');-8); //Anführungszeichen werden flüchtig echo "<hr/">.PHP_EOL; echo htmlspecialchars($str,ENT_QUOTES,'UTF-8);//Anführungszeichen werden flüchtig
Die obigen Beispiele können nicht unterscheiden, ob htmlentities und htmlspecialchars verwendet werden. Nutzen Sie einige spezielle Zeichen, wie Euro, um dies zu ändern. htmlentities wird dies flüchtig machen, während htmlspecialchars dies nicht tun wird.
echo htmlentities(' <>"').PHP_EOL; echo "<hr/">.PHP_EOL; echo htmlspecialchars(' <>"').PHP_EOL; //Nicht flüchtig
Schlussfolgerung:Bei der Verwendung allgemeiner Formularübergaben kann man die HTML-Tags vollständig mit strip_tags entfernen. Bei der Verwendung von Rich-Text-Editoren, bei denen HTML-Tags beibehalten werden sollen, kann die Datenfilterung mit htmlspecialchars durchgeführt werden.
Mehr über PHP und interessante Leser können die Themen dieser Website überprüfen: 'PHP-Sicherheitsanleitung für Programmierung', 'Zusammenfassung der Sicherheitsfiltertechniken von PHP', 'Zusammenfassung der Verwendung von Operatoren und Ausdrücken in PHP', 'Zusammenfassung der Netzwerkprogrammierfähigkeiten von PHP', 'Einführung in die Grundgrammatik von PHP', 'Einführung in die objektorientierte Programmierung von PHP', 'Zusammenfassung der Verwendung von Zeichenfolgen (string) in PHP', 'php'+Einführung in die mysql-Datenbankoperationen und Sammlung häufiger php-Datenbankoperationstipps
Es wird gehofft, dass die in diesem Artikel beschriebenen Inhalte den Lesern bei der PHP-Programmierung helfen.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört den Urhebern. Der Inhalt wurde von Internetnutzern selbstständig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige Inhalte entdecken, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (bei der Abgabe einer E-Mail, ersetzen Sie bitte # durch @) zur Meldung von Missbrauch und stellen Sie relevante Beweise zur Verfügung. Bei nachgewiesener Rechtsverletzung wird diese Website die beanstandeten Inhalte sofort löschen.