2009-08-24 11 views
0

Ich erstelle ein Steuerelement in .net 2.0, damit Benutzer HTML in ein Textfeld schreiben und dann hochladen können. .NET erlaubt es ihnen nicht, es hochzuladen, wenn ich die Seite ValidateRequest = false nicht gesetzt habe. Dies eröffnet natürlich potentielle Sicherheitsbedrohungen. Aber mein Plan ist es, den Code zu überhöhen, ihn nur nach den grundlegenden Tags zu durchsuchen, die ich zulassen würde (wie <B>), möglicherweise in seiner eigenen Zone. Sieht jemand ein Problem damit? Würde ich zu spät scannen?Was ist deine Meinung zum Hochladen von HTML?

Antwort

2

Dies hängt wirklich davon ab, was Sie mit dem Code tun, sobald Sie es hochgeladen haben. Solange Sie filtern, bevor Sie die Daten erneut anzeigen oder speichern, sollten Sie Ihre Exposition begrenzen. Im Idealfall würden Sie HTML-Codierung des Inhalts sein, aber dies ist keine Option, wenn Sie tatsächlich ihren HTML-Code rendern müssen, was ich vermute.

HINWEIS Ich sage nicht, dass das Filtern eine triviale Aufgabe ist, aber Ihr Belichtungsvektor variiert, je nachdem, was Sie mit den Daten machen und wer die Informationen sieht, die da sind. Wenn Sie beispielsweise zulassen, dass ein Benutzer HTML-Eingaben in freiem Format eingibt, die nur für sie gespeichert und angezeigt werden, haben Sie ein geringeres Risiko, andere Besucher oder größere Teile einer Website zu beeinträchtigen. Wenn Sie jedoch sagen, dass Sie an einem Forum-System arbeiten und ein Benutzer falsch formatiertes HTML oder bösartiges HTML postet, könnten Sie die gesamte Website für alle Benutzer durchbrechen.

Aber denken Sie daran, wenn Sie Freiform-HTML-Eingabe zulassen, müssen Sie zusätzlich sicher sein, nicht geschlossene Tags und fehlerhafte HTML-Markup zu behandeln.

Ich persönlich würde empfehlen, wenn Sie HTML-Eingabe von einem Benutzer akzeptieren müssen, die Sie mit einer Form von RichTextEditor Steuerelement gehen. So etwas wie der FCKEditor, der Telerik RadEditor, TinyMCE oder sogar der Markdown-Editor (hier bei Stack Overflow). Dies trägt dazu bei, Ihren Expositionspunkt von der fehlerhaften HTML-Seite der Dinge zu verringern, ganz zu schweigen von einer besseren Erfahrung für die Benutzer.

+0

Ich empfehle TinyMCE als Wysiwyg-Editor. –

+0

-1 Zur Vernachlässigung der Sicherheit. Du machst es klingt wie Filterung ist einfach, indem Sie sagen: "Wenn Sie filtern, begrenzen Sie Ihre Exposition" Allerdings richtig Filtern ist extrem schwierig. – Henri

+1

@Henri - Ich habe den Beitrag aktualisiert, Sie haben Recht, der erste Wortlaut davon, war ein bisschen zu begrenzt in dem Punkt, den ich versuchte zu machen –

0

Ich würde einen Blick auf die Sanitize HTML utility geschrieben von Jeff Atwood werfen.

Kurz gesagt, Seien Sie vorsichtig.

Wenn Sie HTML hochladen möchten Für die Anzeige haben Sie viele potentielle Probleme, von denen Sie die meisten wahrscheinlich erst zu spät sehen werden.

0

Verwenden Sie ein Tool, mit dem Sie den Benutzern die Kontrolle über die Anzeige ihres Textes geben können, ohne HTML zuzulassen. Zum Beispiel verwenden viele Forum-Websites eckige Klammern, um Markup wie [b] etwas Text [/ b] anzuzeigen. Denken Sie besser darüber nach, etwas wie Markdown zu verwenden (was diese Seite übrigens auch verwendet).

Markdown wikipedia: http://en.wikipedia.org/wiki/Markdown

0

Ich würde davon abraten, es sei denn Sie nur ein paar (marktup) Tags können mit keine Attribute. So sollten Sie einen regulären Ausdruck, die

<b> <i> <u> entspricht.

Wenn Sie planen, Dinge wie und Stile zu unterstützen. Vergiss es. Stellen Sie entweder sicher, dass Sie ein Experte in diesem Bereich sind, oder stellen Sie eine vorhandene Bibliothek ein oder verwenden Sie sie.

Um eine Vorstellung davon zu bekommen, wie schwer ist es, durch RSnake einen Blick auf die xss Spickzettel nehmen:

http://ha.ckers.org/xss.html

Und beachten Sie, diese Liste ist bei weitem nicht vollständig.

Verwandte Themen