Il y a beaucoup de fichiers modèles comme celui-ci views-view-fields--magazine--magazine.tpl.php
sur mon site Web. comment et quand dois-je utiliser les filtres filter_xss () et check_plain () pour améliorer la sécurité? par exemple, voici le 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>
Comment puis-je y appliquer ces fonctions?
filter_xss()
lorsque vous souhaitez filtrer XSS à partir de contenu potentiellement dangereux (c'est-à-dire le contenu d'un utilisateur non fiable) etcheck_plain()
lorsque vous souhaitez échapper des caractères spéciaux HTML d'une chaîneRéponses:
Tout d'abord, lisez-les dans l'API Drupal:
check_plain()
Encode donc les caractères spéciaux qui ont une signification spéciale en HTML (comme<
et&
) en entités de texte brut (ie<
et&
respectivement) qui les rendront littéralement (non interprétés comme HTML) lorsque cette chaîne qui sera ensuite affichée dans le cadre d'une page avec Balisage HTML. La fonctionfilter_xss()
filtre une chaîne HTML pour éviter les vulnérabilités de cross-site-scripting (XSS). Cela fait quatre choses:Les deux fonctions sont utilisées pour nettoyer les données des utilisateurs afin de s'assurer que toute injection d'utilisateur est neutralisée avant que les données ne soient rendues sur votre site.
Vous ne passez jamais la même chaîne à travers les deux .
Si vous utilisez,
check_plain()
la chaîne transmise à la fonction est censée être utilisée en texte brut (et non en HTML). Alorsfilter_xss()
n'est pas nécessaire, carcheck_plain()
rendra toujours la chaîne en texte brut.Si vous utilisez
filter_xss()
, la chaîne transmise à la fonction est censée être HTML et lacheck_plain()
gâchera.Lorsque je regarde le modèle que vous utilisez comme exemple, il me semble que les trois champs transmis
print()
proviennent d'un contenu déjà filtré et n'ont plus besoin d'être nettoyés.Cependant, si vous créez votre propre module qui collecte les entrées des utilisateurs sans les passer par un filtre de texte "sûr" tel que "HTML filtré" ou "Ordinaire", vous devez utiliser ces fonctions à des fins d'assainissement.
la source
plain text