Ich schreibe ASP.NET MVC App. Einige HTML-Teile stammen von Benutzern und einige von Drittanbietern. Ist es einfach und schnell genug, HTML ohne schwere Artillerie wie HAP (Html Agility Pack) oder Tidy zu säubern?Raw HTML von schädlichen Daten in C#
Ich bin brauchen nur Skripte, Stile zu entfernen, <object>/<embed>
, href="javascript:"
, style=
, onclick
und ich denke nicht, dass sie manuell über .Remove/.replace Entfernung ein guter Weg ist auch mit Stringbuilder.
Im Beispiel, wenn ich nächste Eingabe
<html>
<style src="http://harmyourpage.com"/>
<script src="http://killyourdog.com"/>
<div>
<a href="http://co.com">Good link</a>
<a href="javascript::harm()">Bad link</a>
<p>Some text <b>to</b> test</p><br/>
<h1 style="position:absolute;">Damage your layout</h1>
And an image there <img src="http://co.com/a.jpg"/><br>
<span onclick="harm()">Good span with bad attribute</span>
<object>Your lovely java can be there</object>
</div>
</html>
, die in der nächsten umgerechnet werden müssen:
<div>
<a href="http://co.com">Good link</a>
<a>Bad link</a>
<p>Some text <b>to</b> test</p><br/>
<h1>Damage your layout</h1>
And an image there <img src="http://co.com/a.jpg"/><br>
<span>Good span with bad attribute</span>
</div>
So, wie dies zu tun - mit weißer Liste von Tags und anttributes - in der richtigen Art und Weise ?
UPD: Ich habe versucht, StackExchange HtmlHelpers Bibliothek, aber es entfernt benötigte Tags wie div
, a
und img
.
verwenden Warum Sie HTML aus Benutzereingaben erlauben es auf jeden Fall? –
Möglicherweise möchten Sie die Endbenutzer-HTML-Eingabe verbieten und entweder eine Markdown-Sprache oder eine Art von Codierung verwenden, nicht nur eine reine Eingabe. – drz