Répertoire de codes source

Filter_NoXss pour éviter les failles de sécurité XSS
déposé par philippe
le 01/08/2007
nombre de visites : 5826

Dans un forum, un blog, un wiki,... un internaute peut envoyer du contenu dans un champs texte. Ce contenu est ensuite affiché chez les autres visiteurs du site. Si dans ce contenu, l'internaute dépose du code javascript (ou même un simple lien) qui envoie par exemple les cookies du visiteur par email, ça pose de sérieux problèmes de sécurité.

Pour éviter ça il faut filtrer les contenus envoyés par les internautes. Voil? une classe Kitpages_Filter_NoXss qui permet de filtrer ces contenus. Elle suit la même syntaxe que les classes Zend_Filter_xxx

J'ai ajouté une méthode filterArray qui filtre l'ensemble des éléments d'un tableau.

<?php
Zend_Loader::loadClass("Zend_Filter_Interface") ;
Zend_Loader::loadClass("Zend_Filter_StripTags") ;
 
class Kitpages_Filter_NoXss implements Zend_Filter_Interface
{
    private $filter = null;
    public function __construct() {
        $this->filter = new Zend_Filter_StripTags(
            array(
            "span","div","li","ul",
            "ol","u","i","em", "strong",
            "strike","b","p","br","hr"
            ),
            array("class")) ;
    }
 
    public function filter($value) {
        return $this->filter->filter($value);
    }
 
    public function filterArray($array) {
        $filteredArray = Array() ;
        foreach($array as $key=>$value) {
            if (is_array($value)) {
                $filteredArray[$key] = $this->filterArray($value);
            }
            else {
                $filteredArray[$key] = $this->filter($value) ;
            }
        }
        return $filteredArray ;
    }
}
?>
 
Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages