React बनाम XSS: जहाँ सुरक्षा घेरे (Guardrails) समाप्त होते हैं
React डिफ़ॉल्ट रूप से सुरक्षित है। यह अधिकांश स्क्रिप्ट इंजेक्शन को रोकने के लिए JSX में वैल्यूज़ को एस्केप (escape) करता है। लेकिन यह सुरक्षा की एक झूठी भावना पैदा करता है। React XSS के जोखिम को कम करता है, लेकिन इसे समाप्त नहीं करता।
XSS हमलों के तीन मुख्य प्रकार हैं:
- Reflected XSS: एक हमलावर एक दुर्भावनापूर्ण (malicious) लिंक भेजता है। सर्वर तुरंत उस स्क्रिप्ट को उपयोगकर्ता को वापस भेज देता है। ब्राउज़र उस स्क्रिप्ट को चला देता है क्योंकि ऐसा लगता है कि वह किसी भरोसेमंद साइट से आई है।
- Stored XSS: हमलावर आपके सर्वर पर एक स्क्रिप्ट सेव कर देता है। यह आपके डेटाबेस, कमेंट्स या लॉग्स में रहती है। जो भी उपयोगकर्ता उस कंटेंट को देखता है, उसके पास वह स्क्रिप्ट चल जाती है।
- DOM Based XSS: यह हमला पूरी तरह से ब्राउज़र में होता है। हमलावर आपके JavaScript को गलत तरीके से व्यवहार करने के लिए मजबूर करने हेतु URL पैरामीटर्स या क्लाइंट-साइड इनपुट्स को बदल देता है।
React वास्तव में आपको किससे बचाता है?
- Automatic Escaping: React स्ट्रिंग्स को प्लेन टेक्स्ट के रूप में मानता है। यदि आप JSX में स्क्रिप्ट टैग इंजेक्ट करने की कोशिश करते हैं, तो React कोड चलाने के बजाय टेक्स्ट दिखा देता है।
- Safe Rendering: React यह प्रबंधित करता है कि कंटेंट कैसे दिखाई देता है। इससे खतरनाक ब्राउज़र APIs का उपयोग करने की आपकी आवश्यकता कम हो जाती है।
- Less DOM Manipulation: React अपडेट्स को संभालता है। आपको
document.write()याinnerHTMLका बार-बार उपयोग करने की आवश्यकता नहीं होती है।
React 'escape hatches' प्रदान करता है। यदि आप उनका गलत उपयोग करते हैं, तो आप सुरक्षा खामियां (vulnerabilities) पैदा कर देते हैं।
इन गलतियों से सावधान रहें:
dangerouslySetInnerHTML: यह प्रॉपर्टी React को एस्केपिंग छोड़ने के लिए कहती है। यह HTML को बिल्कुल वैसा ही डाल देती है जैसा वह है। यदि कंटेंट साफ़ (clean) नहीं है, तो हमलावर सफल हो सकता है। अपने कंटेंट को सैनिटाइज़ (sanitize) करने के लिए पहले DOMPurify का उपयोग करें।- Direct DOM Manipulation: यदि आप यूजर इनपुट के साथ
element.innerHTMLका उपयोग करते हैं, तो आप React की सभी सुरक्षा को दरकिनार कर देते हैं। - Third Party Libraries: कुछ बाहरी टूल्स शायद सुरक्षा के उन्हीं नियमों का पालन न करें।
React सुरक्षा के लिए टूल्स प्रदान करता है। आपको उनका सही ढंग से उपयोग करना चाहिए। सुरक्षा आपकी जिम्मेदारी है।
स्रोत: https://dev.to/ayomidejhay/react-vs-xss-where-the-guardrails-end-6p2