Je dois implémenter un filtre XSS simple et efficace en C++ pour CppCMS. Je ne peux pas utiliser les filtres de haute qualité existants écrits en PHP parce que c'est un framework de haute performance qui utilise C++.Écriture du filtre XSS pour (X) HTML basé sur la liste blanche
L'idée de base est de fournir un filtre contenant une liste de balises HTML et une liste d'options blanche pour ces balises. Par exemple. entrée HTML typique peut se composer de <b>
, <i>
, les étiquettes et <a>
tag avec href
. Mais la mise en œuvre simple n'est pas assez bon, parce que, même permis des liens simples peuvent inclure XSS:
<a href="javascript:alert('XSS')">Click On Me</a>
Il y a beaucoup d'autres exemples peuvent être trouvés there. Donc, je pensais aussi à la possibilité de créer une liste blanche des préfixes pour les balises comme href/src - donc je dois toujours vérifier si elle commence par (https?|ftp)://
Questions:
- ces hypothèses sont sont assez bon pour la plupart des objectifs? Ce qui signifie que si je ne donne pas des options pour les étiquettes
style
et vérifie src/href en utilisant la liste blanche des préfixes, il résout les problèmes XSS? Y a-t-il des problèmes qui ne peuvent pas être résolus de cette façon? - est-il une bonne référence pour la grammaire formelle de HTML/XHTML pour écrire analyseur simple qui serait le nettoyage tout incorrect des balises interdites comme
<script>