Frage

Ich bin auf der Suche nach einem einfachen HTML Sanitizer in JavaScript geschrieben. Es braucht nicht 100% XSS sicher.

Ich bin die Umsetzung Abschlags und den WMD Markdown-Editor (Der SO Master-Zweig von Github) auf meiner Website. Das Problem ist, dass der HTML-Code in der Live-Vorschau angezeigt wird nicht gefiltert, wie es hier auf SO. Ich bin auf der Suche nach einem einfachen / schnellen HTML Sanitizer in JavaScript geschrieben, so dass ich den Inhalt des Vorschaufensters filtert.

Keine Notwendigkeit für einen vollständigen Parser mit vollständigem XSS-Schutz. Ich schicke die Ausgabe nicht an den Server zurück. Ich bin den Abschlag an den Server gesendet, wo ich einen richtigen, vollständigen HTML Sanitizer verwenden, bevor ich das Ergebnis in der Datenbank zu speichern.

Google wird mir absolut nutzlos. Bekomme ich nur Hunderte von (oft falsch) Artikel, wie Javascript, von dem Benutzer in allen Arten von serverseitigen Sprachen erzeugt HTML auszufiltern.

UPDATE

Ich werde ein bisschen besser erklären, warum ich das brauche. Meine Website hat einen Editor sehr ähnlich den hier auf Stackoverflow. Es gibt einen Textbereich Markdown-Syntax und ein Vorschaufenster darunter eingeben, die Sie zeigt, wie es aussehen wird, nachdem Sie es eingereicht.

Wenn die Benutzer etwas vorträgt, ist es an den Server in Markdown-Format gesendet. Der Server wandelt es in HTML und dann läuft ein HTML Sanitizer auf den HTML aufzuräumen. Markdown erlaubt beliebige HTML also muss ich es aufzuräumen. Zum Beispiel kann der Benutzer tippt etwas wie folgt aus:

<script>alert('Boo!');</script>

Der Abschlag Wandler berührt es nicht, da es HTML ist. Der HTML Sanitizer wird es Streifen so das Skript Element weg ist.

Aber das ist nicht das, was im Vorschaufenster passiert. Das Vorschaufenster wandelt nur Markdown HTML sie aber nicht sanieren. So wird das Vorschaufenster ein Skript element.This hat, bedeutet das Vorschaufenster von der tatsächlichen Darstellung auf dem Server unterscheidet.

Ich möchte dieses Problem zu beheben, so dass ich brauche eine schnelle und unsaubere JavaScript HTML Sanitizer. Etwas einfach mit grundlegendem Elemente / Attribut eines schwarzen Liste und Whitelisting tun wird. Es muss nicht sein XSS sicher, weil XSS Schutz durch die serverseitige erfolgt HTML Sanitizer.

Dies ist nur um sicherzustellen, dass das Vorschaufenster des tatsächliche Rendering 99,99% der Zeit übereinstimmen, was für mich gut genug ist.

Können Sie mir helfen? Vielen Dank im Voraus!

War es hilfreich?

Lösung

Sie sollten einen Blick auf die in dieser Frage empfohlenen haben Sanitize / Rewrite HTML-Code auf der Client-Seite

Und nur um sicher zu sein, dass Sie nicht brauchen, um mehr über XSS zu tun, benutzen Sie bitte die Antworten auf diese eine Bewertung Wie Javascript-Injection-Angriffe innerhalb von User-generierten HTML

Andere Tipps

Wir haben ein einfaches HtmlSantizer entwickelt und opensourced es hier: https://github.com/jitbit/HtmlSanitizer

Verwendung

var result = HtmlSanitizer.SanitizeHtml(input);

[Disclaimer! Ich bin einer der Autoren!]

für meine Funktion habe ich sorgte mich nur, dass die Zeichenfolge nicht leer ist, und enthält nur alphanumerische Zeichen. Diese nutzt Ebene JS und keine dritten Bibliotheken oder nichts. Es enthält eine lange regex, aber es macht den Job;) Sie könnten auf diese bauen, sondern haben Ihre Regex etwas mehr gleich ‚‘ (mit Zeichen erforderlichenfalls entkommen, und minus die Räume). ;)

    var validateString = function(string) {

      var validity = true;

      if( string == '' ) { validity = false; }

      if( string.match( /[ |<|,|>|\.|\?|\/|:|;|"|'|{|\[|}|\]|\||\\|~|`|!|@|#|\$|%|\^|&|\*|\(|\)|_|\-|\+|=]+/ ) != null ) {

          validity = false;
      }

      return validity;
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top