Es gibt viele Vorlagendateien wie diese views-view-fields--magazine--magazine.tpl.php
auf meiner Website. Wie und wann sollte ich filter_xss () und check_plain () verwenden, um die Sicherheit zu verbessern? Zum Beispiel ist dies der Code:
<div>
<div class="bf-header bf-article-header"><?php print $fields['title']->content; ?></div>
<div class="bf-article-body"><?php print $fields['field_magazine_body']->content;?></div>
<div class="bf-article-image"><?php print $fields['field_magazine_image']->content;?></div>
</div>
<div class="separator article-view-separator"></div>
Wie kann ich diese Funktionen darin anwenden?
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 ZeichenfolgeAntworten:
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 Funktionfilter_xss()
filtert eine HTML-Zeichenfolge, um XSS-Schwachstellen (Cross-Site-Scripting) zu vermeiden. Es macht vier Dinge: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. Dannfilter_xss()
wird es nicht benötigt, dacheck_plain()
der String immer als Klartext angezeigt wird.Wenn Sie verwenden
filter_xss()
, sollte die an die Funktion übergebene Zeichenfolge HTML sein undcheck_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.
quelle
plain text