React échappe automatiquement les variables pour vous ... Il empêche l'injection XSS via une chaîne HTML avec Javascript malveillant .. Naturellement, les entrées sont nettoyées avec cela.
Par exemple, disons que vous avez cette chaîne
var htmlString = '<img src="javascript:alert('XSS!')" />';
si vous essayez de rendre cette chaîne en react
render() {
return (
<div>{htmlString}</div>
);
}
vous verrez littéralement sur la page toute la chaîne, y compris la <span>
balise d'élément. aka dans le navigateur, vous verrez<img src="javascript:alert('XSS!')" />
si vous affichez le code source html, vous verriez
<span>"<img src="javascript:alert('XSS!')" />"</span>
Voici quelques détails supplémentaires sur ce qu'est une attaque XSS
React fait que vous ne pouvez pas insérer de balisage à moins que vous ne créiez les éléments vous-même dans la fonction de rendu ... cela étant dit, ils ont une fonction qui permet un tel rendu, c'est appelé dangerouslySetInnerHTML
... voici plus de détails à ce sujet
Éditer:
Peu de choses à noter, il existe des moyens de contourner ce que React échappe. Une méthode plus courante consiste à définir des accessoires pour votre composant. N'étendez pas les données de l'entrée utilisateur comme accessoires!