Lesen Sie zunächst in der Drupal-API nach:
So check_plain()
codiert Sonderzeichen , die eine besondere Bedeutung in HTML (zB <
und &
) in Klartext Einheiten (dh <
und &
jeweils) , die diese machen wörtlich wiedergegeben werden (nicht als HTML interpretiert) , wenn die Zeichenfolge , die dann als Teil einer Seite angezeigt wird mit HTML-Markup. Die Funktion filter_xss()
filtert eine HTML-Zeichenfolge, um XSS-Schwachstellen (Cross-Site-Scripting) zu vermeiden. Es macht vier Dinge:
- Entfernen von Zeichen und Konstrukten, die Browser austricksen können
- Stellen Sie sicher, dass alle HTML-Entitäten wohlgeformt sind
- Stellen Sie sicher, dass alle HTML-Tags und -Attribute wohlgeformt sind
- Stellen Sie sicher, dass keine HTML-Tags URLs mit einem nicht zulässigen Protokoll enthalten (z. B. Javascript :)
Beide Funktionen werden verwendet, um Daten von Benutzern zu bereinigen, um sicherzustellen, dass jede Benutzerinjektion neutralisiert wird, bevor die Daten auf Ihrer Site gerendert werden.
Sie führen niemals dieselbe Zeichenfolge durch beide .
Wenn Sie verwenden, sollte check_plain()
die an die Funktion übergebene Zeichenfolge als einfacher Text (nicht als HTML) verwendet werden. Dann filter_xss()
wird es nicht benötigt, da check_plain()
der String immer als Klartext angezeigt wird.
Wenn Sie verwenden filter_xss()
, sollte die an die Funktion übergebene Zeichenfolge HTML sein und check_plain()
sie durcheinander bringen.
Wenn ich mir die Vorlage ansehe, die Sie als Beispiel verwenden, sieht es für mich so aus, als ob alle drei Felder, an die übergeben wurde, print()
aus Inhalten stammen, die bereits bereinigt sind und keine weitere Bereinigung benötigen.
Wenn Sie jedoch ein eigenes Modul erstellen , das Benutzereingaben sammelt, ohne diese durch einen "sicheren" Textfilter wie "Gefiltertes HTML" oder "Einfach" zu leiten, müssen Sie diese Funktionen für Hygienezwecke verwenden.
filter_xss()
Sie diese Option, wenn Sie XSS aus potenziell gefährlichen Inhalten (dh Inhalten eines nicht vertrauenswürdigen Benutzers) filtern möchten undcheck_plain()
wenn Sie HTML-Sonderzeichen aus einer Zeichenfolge