J'essaie d'écrire une fonction regex pour supprimer les attributs onclick (aussi onload, onmouseover etc.) des éléments HTML. Je veux faire cela du côté du serveur avant que le HTML soit envoyé au client.Regex pour supprimer les attributs onclick = "" des éléments HTML dans ASP.NET C# (côté serveur)
J'ai du contenu provenant d'un éditeur de texte enrichi et affiché à l'écran dans un div, et je veux protéger contre XSS (Cross Site Scripting). Évidemment je ne peux pas l'encoder en HTML en utilisant Server.HtmlEncode() parce que le texte riche stocke le texte en tant que balisage HTML, donc j'utilise une approche blacklisting, en recherchant certains éléments tels que <script>
et <style>
. Je suis maintenant essayer de chercher onclick, attributs onmouseover etc., jusqu'à présent, je donne les résultats suivants:
returnVal = Regex.Replace(returnVal, @"\<(.*?)(\ on[a-z]+\=\""?.*?\""?)*(.*?)\>",
"<$1 $3>", RegexOptions.Singleline | RegexOptions.IgnoreCase);
... qui ne fonctionne pas, et je l'ai essayé quelques variations. Fondamentalement, je veux pour que ...
<p style="font-style: italic" onclick="alert('hacked!!');">Hello World</p>
... voit transformée en
<p style="font-style: italic">Hello World</p>
Toutes les idées? À votre santé!
avez-vous vu ici: http://refactormycode.com/codes/333-sanitize-html? – AndreasKnudsen