Umgang mit Desinfektionen in JavaScript-Editoren, die Formatierung ermöglichen

8

Viele Editoren wie Medium bieten jetzt Formatierungen an. Von dem, was ich im DOM sehe, fügt es einfach HTML hinzu. Aber wie bereinigen Sie diese Art der Eingabe, ohne die vom Benutzer angewendete Formatierung zu verlieren?

z. Klicken auf Fett fügt hinzu:

<strong class="markup--strong markup--p-strong">text</strong>

, aber Sie möchten nicht rendern, wenn der Benutzer das selbst eingibt. Wie ist das anders? Wäre das auch anders, wenn Sie mit Abschlägen stylen würden, aber nicht zulassen, dass Benutzer ihre eigene Abschrift eingeben, sondern nur über den Browser zugänglich machen?

Eine Möglichkeit, an die ich denken könnte, ist, jedem HTML-Sonderzeichen zu entkommen, aber das scheint merkwürdig. Soweit ich weiß, entkeimen Sie den Inhalt nur bei der Ausgabe

    
Mahoni 05.11.2017, 02:13
quelle

2 Antworten

3

Sie sollten ein serverseitiges Desinfektionsmittel verwenden, wie von Vipin angegeben, da die Validierung auf der Client-Seite dazu neigt, manipuliert zu werden. OWASP (Open Web Application Security Project) enthält einige Anleitungen und Desinfektoren, die Sie wie den Java-html-Sanitizer verwenden können.

Für eine allgemeine Beschreibung des Konzepts lesen Sie bitte Ссылка im Abschnitt Sanitize.

    
WelsonJR 21.11.2017 11:59
quelle
1

Sie könnten die in der weißen Liste aufgelisteten Elemente durch ein anderes Zeichen ersetzen, zum Beispiel:

%Vor%

Dann entfernst du ALLE anderen HTML-Dateien. Achten Sie auf onmouseover="alert (1)", also halten Sie es wirklich einfach.

Seien Sie auch vorsichtig beim Rendern der Benutzereingabe. Füge es nicht einfach als Code hinzu. Analysieren Sie es stattdessen und erstellen Sie die Elemente mit JavaScript. Verwenden Sie nie innerHTML, aber verwenden Sie .innerText und document.createElement ().

    
user5886944 24.11.2017 23:09
quelle