 |
Forum |
|
|
Réagissez
dans les forums
de JDN Développeurs
|
Nous avions déjà publié un article de Chris
Shiflett expliquant comment
se protéger des attaques XSS et CSRF avec PHP. Nous
vous proposons ici une utilisation des expressions régulières
pour plus simplement filtrer certaines balises des formulaires
HTML que vous mettez à disposition de vos visiteurs.
Ce script cherche à reconnaître une balise (ouverte
ou fermée, peu importe ses attributs) et en cas de
reconnaissance, la remplace par une chaîne vide, c'est
à dire qu'en pratique elle efface la balise.
Pour parcourir la chaîne, nous avons recours à
un chemin détourné qui consiste à compter
le nombre de caractères dans la chaîne et à
augmenter à chaque passage la valeur de l'itération.
Exemple :
Le
code
<script>
function regclean() {
expr = /<\/?(table|tr|td|script|b|i|em|strong|font|script)[^>]*>/;
if (document.getElementById) {
sale = document.getElementById("sale").value;
longu = sale.length;
i=0;
transition = sale.replace(expr, "")
while (i<longu) {
transition = transition.replace(expr,
"");
document.getElementById("propre").value
= transition;
i=i+5;
}
}
}
</script>
<form method="post" action="">
<p>
<textarea id="sale" name="sale"
cols="50" rows="6"><table><b>aaa</b></table></textarea>
</p>
<p>
<input type="button" name="Submit"
value="Nettoyer" onclick="regclean();">
</p>
<p>
<textarea id="propre" name="propre"
cols="50" rows="6"></textarea>
</p>
</form>
|