React entgeht automatisch Variablen für Sie ... Es verhindert die XSS-Injektion über String-HTML mit bösartigem Javascript. Natürlich werden Eingaben zusammen mit diesem bereinigt.
Nehmen wir zum Beispiel an, Sie haben diese Zeichenfolge
var htmlString = '<img src="javascript:alert('XSS!')" />';
Wenn Sie versuchen, diese Zeichenfolge in Reaktion zu rendern
render() {
return (
<div>{htmlString}</div>
);
}
Sie sehen buchstäblich auf der Seite die gesamte Zeichenfolge einschließlich des <span>
Element-Tags. aka im Browser sehen Sie<img src="javascript:alert('XSS!')" />
Wenn Sie die Quell-HTML anzeigen, würden Sie sehen
<span>"<img src="javascript:alert('XSS!')" />"</span>
Hier finden Sie weitere Informationen zu einem XSS-Angriff
Reagieren im Grunde macht es so dass Sie nicht einfügen Markup können , wenn Sie die Elemente sich in der Funktion machen schaffen ... sagte , dass Wesen sie habe eine Funktion , die so erlaubt Rendering seine genannte dangerouslySetInnerHTML
... hier ist etwas ausführlicher darüber
Bearbeiten:
Nur wenige Dinge zu beachten, es gibt Möglichkeiten, um zu umgehen, was React entgeht. Eine weitere Möglichkeit besteht darin, dass Benutzer Requisiten für Ihre Komponente definieren. Erweitern Sie keine Daten aus Benutzereingaben als Requisiten!