प्रतिक्रिया स्वचालित रूप से आपके लिए चर से बच जाती है ... यह दुर्भावनापूर्ण जावास्क्रिप्ट के साथ स्ट्रिंग एचटीएमएल के माध्यम से एक्सएसएस इंजेक्शन को रोकता है .. स्वाभाविक रूप से, इसके साथ इनपुट भी पवित्र होते हैं।
उदाहरण के लिए मान लें कि आपके पास यह स्ट्रिंग है
var htmlString = '<img src="javascript:alert('XSS!')" />';
यदि आप प्रतिक्रिया में इस स्ट्रिंग को प्रस्तुत करने का प्रयास करते हैं
render() {
return (
<div>{htmlString}</div>
);
}
आप सचमुच <span>
तत्व टैग सहित पूरे स्ट्रिंग पृष्ठ पर देखेंगे । ब्राउज़र में उर्फ आप देखेंगे<img src="javascript:alert('XSS!')" />
यदि आप स्रोत HTML देखते हैं तो आप देखेंगे
<span>"<img src="javascript:alert('XSS!')" />"</span>
यहां एक XSS हमले के बारे में कुछ और विवरण दिए गए हैं
React मूल रूप से इसे बनाता है ताकि आप मार्कअप न डाल सकें जब तक कि आप रेंडर फंक्शन में एलिमेंट्स खुद नहीं बनाते ... कहा जा रहा है कि उनके पास एक फंक्शन है जो इस तरह के रेंडर को इसकी अनुमति देता है dangerouslySetInnerHTML
... यहाँ इसके बारे में कुछ और विस्तार से बताया गया है
संपादित करें:
ध्यान देने योग्य कुछ बातें, रिएक्ट से बच निकलने के रास्ते हैं। एक और सामान्य तरीका यह है कि जब उपयोगकर्ता आपके घटक के लिए प्रॉपर परिभाषित करते हैं। प्रॉप के रूप में उपयोगकर्ता इनपुट से किसी भी डेटा का विस्तार न करें!