flawopen.com/XSS/SVG upload
क्या SVG upload में XSS का जोखिम है?
अपलोड किया गया SVG केवल pixels नहीं, एक document है; इसमें scripts और event handlers जैसे सक्रिय तत्व हो सकते हैं। Script चलेगी या नहीं, यह browser context पर निर्भर है। <img> में यह सीमित image context में रहता है; inline, direct navigation या document embedding सक्रिय हो सकते हैं।
SVG दूसरे image formats से कैसे अलग है
PNG या JPEG के विपरीत, SVG XML है और इसमें active content हो सकता है। Browser <img> जैसे सीमित image contexts में scripts बंद करता है, लेकिन SVG को सीधे खोलने, <object>, <iframe> या <embed> से document की तरह embed करने, या markup को inline डालने पर यह लागू नहीं होता। App origin पर active document की तरह serve की गई user profile image stored XSS बन सकती है। व्यवहार context पर निर्भर है; extension और MIME content sanitization नहीं हैं।
Uploads को सुरक्षित करना
- ✓Store या display करने से पहले maintained SVG sanitizer और स्पष्ट allowlist अपनाएँ। जरूरत न होने पर executable elements, event handlers, external references और
foreignObjectहटाएँ; XML को regex से sanitize न करें। - ✓यदि user को केवल image चाहिए तो isolated, resource-limited process में SVG को rasterize करें और raster output serve करें। Original को जरूरत न होने पर web root से बाहर रखें।
- ✓User uploads को अलग registrable domain से serve करें जहाँ application cookies न भेजी जाएँ। केवल sibling subdomain parent-domain cookies पा सकता है।
- ✓यदि untrusted SVG को document के रूप में रखना जरूरी हो तो download force करें और Content-Disposition: attachment तथा
X-Content-Type-Options: nosniffदें, या केवल <img> जैसे restricted image context में दिखाएँ। Inline, <object>, <iframe> और same-origin document serving से बचें।
अक्सर पूछे जाने वाले प्रश्न
['क्या file extension या MIME type जाँचना पर्याप्त है?', 'नहीं। Extension और घोषित MIME metadata हैं, active document content की जाँच नहीं। वास्तविक format सत्यापित करें, फिर SVG-aware allowlist sanitizer लगाएँ या SVG सुविधाएँ आवश्यक न हों तो raster में बदलें।']
संदर्भ
- OWASP XML Security Cheat Sheet
- flawopen.com — Cross-Site Scripting
- OWASP — File Upload Cheat Sheet
- OWASP ASVS — sanitizing or sandboxing SVG scriptable content