flawopen.com/XSS/CSP vs. escape
CSP और output escaping: क्या दोनों XSS सुरक्षा के लिए ज़रूरी हैं?
संदर्भ के अनुसार output encoding अविश्वसनीय मानों को executable markup के बजाय डेटा के रूप में पेज में रखता है। Content Security Policy (CSP) दूसरी सुरक्षा परत है: चौकीदार की तरह यह देखती है कि कौन-से scripts चलें और कहाँ जुड़ें। Encoding चूकने पर यह कुछ injected व्यवहार रोक सकती है। यह चूक को ठीक नहीं करती, और ढीली policy script को न रोक पाए।
दोनों सुरक्षा उपाय क्या करते हैं
डेटा को output context में रखते समय encode करें। HTML text, quoted attributes, JavaScript, CSS और URL हिस्सों के parsing नियम अलग हैं; सही encoder ठीक उसी context पर निर्भर है। Framework templates और सुरक्षित DOM sinks अपनाएँ; untrusted values को inline script या event-handler attributes जैसे executable contexts में न रखें। यही XSS रोकने का प्राथमिक उपाय है।
लागू Content-Security-Policy inline scripts, script sources और connect-src जैसे destinations सीमित कर सकता है। Encoding छूटने पर ठीक से बनाई policy किसी खास script या connection को रोक सकती है। नतीजा policy और browser पर निर्भर है: CSP हर payload, data leak या script gadget को रोकने की गारंटी नहीं देता; injection बनी रहती है।
CSP output encoding की जगह क्यों नहीं ले सकता
ढीली या गलत policy injection को चलने दे सकती है। 'unsafe-inline' अनुमति inline scripts से सुरक्षा घटाती है; व्यापक host lists script देने वाले endpoints को भी स्वीकार सकती हैं। CSP directives के काम अलग हैं: script-src सीमित करने पर network destinations के लिए सोच-समझकर connect-src भी तय करें। Content-Security-Policy-Report-Only उल्लंघन बताता है, रोकता नहीं। Encoding से दोष ठीक करें और CSP को अतिरिक्त सुरक्षा मानें।
आम सवाल
ज़रूरी scripts की सूची बनाएँ और nonce या hash आधारित policy जाँचें जो 'unsafe-inline' और 'unsafe-eval' से बचे। पहले Content-Security-Policy-Report-Only से टूटने वाली चीज़ें खोजें; यह लागू नहीं करता। Reports देखें, वैध dependencies ठीक करें, फिर लागू Content-Security-Policy भेजें। इस पूरी प्रक्रिया में context-aware encoding जारी रखें।
संदर्भ
- OWASP — Content Security Policy मार्गदर्शिका
- OWASP — Cross-Site Scripting रोकथाम
- MDN — Content Security Policy लागू करना
- W3C — Content Security Policy Level 3