Check_plain () suffit-il?


Réponses:


26

J'imagine que la question concerne l'utilisation check_plain(filter_xss($string)), ou filter_xss(check_plain($string)).

check_plain()et filter_xss()ont deux objectifs différents et en revanche:

  • check_plain() code des caractères spéciaux dans une chaîne de texte brut qui est ensuite affichée au format HTML.
  • filter_xss()filtre une chaîne HTML pour éviter les vulnérabilités de cross-site-scripting (XSS). Son objectif est notamment:

    • Suppression de caractères et de constructions pouvant tromper les navigateurs
    • S'assurer que toutes les entités HTML sont bien formées
    • S'assurer que toutes les balises et attributs HTML sont bien formés
    • S'assurer qu'aucune balise HTML ne contient d'URL avec un protocole interdit (par exemple javascript :)

Si vous utilisez check_plain(), la chaîne passée à la fonction est censée être utilisée comme texte brut; dans ce cas, filter_xss()n'est pas nécessaire. Si vous utilisez filter_xss(), la chaîne transmise à la fonction est censée être HTML et check_plain()n'est pas nécessaire.

Si la question concerne l'utilisation check_plain()et filter_xss()sur différentes parties de la même chaîne, alors, comme l'a souligné greggles dans son commentaire, vous pouvez utiliser (par exemple) check_plain()le contenu des attributs de balise et filter_xss()la balise HTML entière.


5
filter_xss est destiné à être utilisé sur des morceaux entiers de html. Si vous utilisez filter_xss sur un attribut html, il ne le filtrera pas correctement. check_plain peut être utilisé pour filtrer en toute sécurité les attributs html. Voir aussi drupalscout.com/knowledge-base/… et drupalscout.com/knowledge-base/… pour plus d'informations sur l'utilisation de ces fonctions.
gréggle
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.