React evita automaticamente le variabili per te ... Impedisce l'iniezione XSS tramite stringa HTML con JavaScript dannoso .. Naturalmente, gli input vengono disinfettati insieme a questo.
Ad esempio, diciamo che hai questa stringa
var htmlString = '<img src="javascript:alert('XSS!')" />';
se provi a rendere questa stringa in react
render() {
return (
<div>{htmlString}</div>
);
}
vedrai letteralmente sulla pagina l'intera stringa incluso il <span>
tag dell'elemento. aka nel browser vedrai<img src="javascript:alert('XSS!')" />
se visualizzi il codice sorgente html vedresti
<span>"<img src="javascript:alert('XSS!')" />"</span>
Ecco qualche dettaglio in più su cosa sia un attacco XSS
React fondamentalmente lo fa in modo che tu non possa inserire markup a meno che tu non crei gli elementi tu stesso nella funzione di rendering ... detto questo hanno una funzione che consente tale rendering è chiamato dangerouslySetInnerHTML
... ecco qualche dettaglio in più a riguardo
Modificare:
Poche cose da notare, ci sono modi per aggirare ciò che React sfugge. Un modo più comune è quando gli utenti definiscono gli oggetti di scena per il tuo componente. Non estendere i dati dall'input dell'utente come oggetti di scena!