पेनलिजेंट हेडर
काली
AMD64 के लिए
मैक
ARM64 के लिए
मैक
जल्द आ रहा है
विंडोज़
जल्द आ रहा है

XSS चीट शीट: एक-क्लिक पेनलिजेंट एकीकरण के साथ एक शोध-संचालित मार्गदर्शिका

अमूर्त

क्रॉस-साइट स्क्रिप्टिंग (XSS) सबसे प्रचलित और खतरनाक वेब कमजोरियों में से एक बनी हुई है। आधुनिक फ्रंट-एंड फ्रेमवर्क, SPA (सिंगल पेज एप्लिकेशन), और समृद्ध तृतीय-पक्ष स्क्रिप्ट इकोसिस्टम अवसर और जटिलता दोनों का विस्तार करते हैं। यह लेख OWASP XSS रोकथाम चीट शीट को हाल के अकादमिक और उद्योग अनुसंधान के साथ मिलाकर एक स्तरित रक्षा रणनीति तैयार करता है: प्रासंगिक एन्कोडिंग, HTML सैनिटाइजेशन, DOM XSS के लिए डायनेमिक टैंट ट्रैकिंग, पार्सिंग-डिफरेंशियल फ़ज़िंग, कंटेंट सिक्योरिटी पॉलिसी (CSP), और आपूर्ति-श्रृंखला नियंत्रण। हम आगे एक डिज़ाइन का प्रस्ताव देते हैं एक-क्लिक “XSS स्कैन” पेनलिजेंट के भीतर स्वचालित पाइपलाइन, पुन: प्रयोज्य स्कैनिंग टेम्प्लेट, रनटाइम इंस्ट्रूमेंटेशन और रिपोर्ट जनरेशन जैसी सुविधाएँ। यह दस्तावेज़ इंजीनियरिंग श्वेतपत्रों या उत्पाद दस्तावेज़ीकरण में सीधे शामिल करने के लिए उपयुक्त है।

XSS धोखा

प्रेरणा

XSS भेद्यताएँ हमलावरों को अन्यथा हानिरहित वेब पेजों में निष्पादन योग्य स्क्रिप्ट डालने में सक्षम बनाती हैं, जो साइट के डोमेन विशेषाधिकारों के अंतर्गत पीड़ित के ब्राउज़र में प्रभावी रूप से क्रियान्वित होती हैं। ये हमले संवेदनशील डेटा (कुकीज़, लोकल स्टोरेज) की घुसपैठ कर सकते हैं, अनधिकृत गतिविधियाँ कर सकते हैं, या सामग्री को विकृत कर सकते हैं।MDN वेब दस्तावेज़)

दशकों की जागरूकता और शमन तकनीकों के बावजूद, XSS एक सतत जोखिम बना हुआ है। क्लाइंट-साइड रेंडरिंग, डायनेमिक जावास्क्रिप्ट फ्रेमवर्क, थर्ड-पार्टी स्क्रिप्ट और लगातार जटिल होते टेम्प्लेटिंग सिस्टम के उदय ने शुद्धता की गारंटी देना कठिन बना दिया है।

इस गाइड के लक्ष्य:

  • आधिकारिक OWASP चीट शीट के व्यावहारिक नियमों को अद्यतन शैक्षणिक और इंजीनियरिंग अनुसंधान के साथ संयोजित करें।
  • एक ही उपाय के बजाय एक मजबूत, बहुस्तरीय रक्षा संरचना प्रदान करें।
  • पेनलिजेंट के लिए एक ठोस डिजाइन प्रस्तुत करें एक-क्लिक XSS स्कैन विशेषता, अनुसंधान और उत्पाद को जोड़ने वाला।

आधार: प्रासंगिक एन्कोडिंग और सुरक्षित सिंक

XSS रोकथाम का एक मुख्य सिद्धांत है: कभी भी कच्चे अविश्वसनीय डेटा को निष्पादन योग्य संदर्भ तक पहुँचने की अनुमति न दें उचित एन्कोडिंग या सैनिटाइज़ेशन के बिना। एन्कोडिंग संदर्भ (HTML बॉडी, एट्रिब्यूट, जावास्क्रिप्ट लिटरल, CSS, या URL) के अनुकूल होनी चाहिए। यही OWASP XSS रोकथाम चीट शीट का सार है। (cheatsheetseries.owasp.org)

प्रासंगिक आउटपुट एन्कोडिंग नियम

प्रसंगअसुरक्षित उदाहरणसुरक्षित एन्कोडिंग / शमन
HTML पाठ सामग्री<div>${उपयोगकर्ता इनपुट}</div>HTML एंटिटी एनकोड (<, और, वगैरह।)
HTML विशेषता<img src="${url}">उद्धरण विशेषता + विशेषता एन्कोडिंग; URL योजना मान्य करें
जावास्क्रिप्ट लिटरल<script>var v = '${userInput}';</script>JS स्ट्रिंग एस्केपिंग (\uXXXX, उद्धरण/बैकस्लैश से बचें)
सीएसएस<div style="width:${input}px">सख्त सत्यापन, CSS एस्केपिंग, या गतिशील CSS की अनुमति न देना
यूआरएल / एचआरईएफ<a href="${href}">क्लिक</a>प्रतिशत-एन्कोड, योजना श्वेतसूची (http/https), कैनोनिकलाइज़ेशन

व्यवहार में, हमेशा अंतर्निहित या अच्छी तरह से परीक्षित एन्कोडिंग लाइब्रेरीज़ को प्राथमिकता दें। अपने स्वयं के तदर्थ प्रतिस्थापन बनाने से बचें।

सुरक्षित सिंक और खतरनाक API से बचना

सही एन्कोडिंग के बावजूद, कुछ API स्वाभाविक रूप से जोखिम भरे होते हैं। खतरनाक सिंक के उदाहरणों में शामिल हैं:

  • आंतरिक HTML, बाहरी HTML
  • दस्तावेज़.लिखें, दस्तावेज़.writeln
  • मूल्यांकन(), समारोह() निर्माता
  • इनलाइन इवेंट हैंडलर (जैसे ऑनक्लिक="…" गतिशील सामग्री के साथ)

सुरक्षित विकल्पों को प्राथमिकता दें:

  • .टेक्स्टकंटेंट या .आंतरिक पाठ पाठ सम्मिलित करने के लिए
  • तत्व.setAttribute() (नियंत्रित विशेषता नामों के लिए)
  • DOM विधियाँ (जैसे अपेंड चाइल्ड, क्रिएटएलिमेंट) स्ट्रिंग संयोजन के बिना

जब समृद्ध HTML की आवश्यकता हो तो HTML स्वच्छता

ऐसे परिदृश्यों में जहाँ उपयोगकर्ता द्वारा प्रदत्त सामग्री में कुछ HTML (जैसे WYSIWYG संपादक, सीमित मार्कअप वाली टिप्पणियाँ) शामिल करने की अनुमति है, स्वच्छता आवश्यक है। मूल दृष्टिकोण यह है:

  1. श्वेतसूची अनुमत टैग, विशेषताएँ, और विशेषता मान पैटर्न.
  2. भंगुर कस्टम रेगेक्स के बजाय परिपक्व लाइब्रेरीज़ (जैसे DOMPurify) का उपयोग करें।
  3. जागरूक रहें पार्सिंग-विभेदक हमले: सैनिटाइज़र का पार्सिंग व्यवहार ब्राउज़र के HTML पार्सर से भिन्न हो सकता है, जिसके कारण बाईपास हो सकता है।

एक ज्ञात शोध रेखा दर्शाती है कि कैसे सैनिटाइज़र और ब्राउज़र कॉर्नर-केस मार्कअप की व्याख्या में भिन्न हो सकते हैं, जिससे वैकल्पिक टोकनाइज़ेशन के माध्यम से बचाव संभव हो जाता है। (देखें "पार्सिंग डिफरेंशियल्स" शोध)

रनटाइम टेंट ट्रैकिंग के माध्यम से DOM-आधारित XSS का पता लगाना

सर्वर-साइड तकनीकें विश्वसनीय रूप से पकड़ नहीं सकतीं डोम एक्सएसएस (क्लाइंट-साइड इंजेक्शन), क्योंकि संबंधित सिंक पेज लोड होने के बाद जावास्क्रिप्ट में हो सकता है। डायनामिक टैंट ट्रैकिंग (अविश्वसनीय स्रोतों को चिह्नित करना और प्रसार पर नज़र रखना) एक अच्छी तरह से अध्ययन की गई विधि है।

  • टीटी-एक्सएसएस (आर. वांग एट अल. द्वारा) गतिशील दाग-आधारित DOM XSS पहचान का एक शास्त्रीय कार्यान्वयन है।科学直通车)
  • अपनी पीढ़ी के बारे में बात करना लक्षित DOM XSS शोषण उत्पन्न करने के लिए गतिशील डेटा प्रवाह विश्लेषण का उपयोग करता है।रिसर्चगेट)
  • ट्रस्टीमॉन (2025) एक व्यावहारिक रनटाइम मॉनिटरिंग सिस्टम प्रदर्शित करता है जो वास्तविक दुनिया के ऐप्स में DOM-आधारित XSS का उच्च सटीकता और कम गलत सकारात्मकता के साथ पता लगा सकता है।एसीएम डिजिटल लाइब्रेरी)

ये प्रणालियाँ क्लाइंट-साइड निष्पादन को उपकरण बनाती हैं, अविश्वसनीय इनपुट (जैसे URL हैश, क्वेरी पैरामीटर, DOM तत्व) को टैग करती हैं, और पता लगाती हैं कि वे कब खतरनाक सिंक तक पहुँचते हैं (जैसे आंतरिक HTML) को इस तरह से निष्पादित करें कि स्क्रिप्ट निष्पादित हो जाए।

एक चेतावनी: रनटाइम ट्रैकिंग की प्रदर्शन लागत होती है। कुछ कार्य संयोजन करते हैं प्रीफ़िल्टर के रूप में ML/DNN दाग-ट्रैकिंग ओवरहेड को कम करने के लिए। उदाहरण के लिए, मेलिचर एट अल. संभावित कमजोर कार्यों को पूर्व-वर्गीकृत करने और केवल वहीं दाग ट्रैकिंग लागू करने के लिए गहन शिक्षण का उपयोग करने का प्रस्ताव रखते हैं।contrib.andrew.cmu.edu)

उदाहरण A — निश्चित (सुरक्षित सिंक का उपयोग करें पाठ्य सामग्री)

<html>
  <head><title>स्वागत</title></head>
  <body>
    <h1>नमस्ते!</h1>
    <div id="greeting"></div>
    <script>
      function getQueryParam(name) {
        return new URLSearchParams(window.location.search).get(name);
      }
      var raw = getQueryParam("name") || "";
      // Use textContent to insert as plain text (safe)
      document.getElementById("greeting").textContent = raw;
    </script>
    <p>हमारी साइट पर आपका स्वागत है।</p>
  </body>
</html>

यह सुरक्षित क्यों है: पाठ्य सामग्री सादा पाठ लिखता है; भले ही कच्चा रोकना <script>…</script>, इसे टेक्स्ट के रूप में रेंडर किया जाएगा, निष्पादित नहीं किया जाएगा। इसके अलावा, URLSearchParams भंगुर सूचकांक/सबस्ट्रिंग पार्सिंग से बचा जाता है। portswigger.net

DOM आधारित XSS

उदाहरण B — विशेषता सिंक और सुरक्षित URL प्रबंधन (href छद्म-सिंक)

कमजोर पैटर्न:

// असुरक्षित: var params = new URLSearchParams(window.location.search); var target = params.get("url"); // उपयोगकर्ता-नियंत्रित document.getElementById("mylink").href = target;

अगर लक्ष्य यह जावास्क्रिप्ट कोड है, लिंक पर क्लिक करने से JS निष्पादित होता है।

सुरक्षित पैटर्न (मान्य योजना):

function safeHref(input) {
  try {
    var u = new URL(input, window.location.origin);
    if (u.protocol === "http:" || u.protocol === "https:") {
      return u.toString();
    }
  } catch(e) { /* invalid URL */ }
  return "#";
}
document.getElementById("mylink").href = safeHref(params.get("url"));

स्पष्टीकरण: नया यूआरएल() सामान्य करता है; हम केवल अनुमति देते हैं http:/https: योजनाएँ। यह ब्लॉक जावास्क्रिप्ट:/डेटा: योजनाएँ. portswigger.net

सामग्री सुरक्षा नीति (CSP): गहन सुरक्षा

जबकि एन्कोडिंग और सैनिटाइजेशन प्राथमिक सुरक्षा हैं, सीएसपी एक प्रदान करता है मजबूत द्वितीयक अवरोधनॉन्स या हैश का उपयोग करते हुए एक अच्छी तरह से कॉन्फ़िगर किया गया CSP, साथ में सख्त-गतिशील और हटाना 'असुरक्षित-इनलाइन', XSS शोषण को काफी हद तक नियंत्रित कर सकता है।

हालाँकि, इसमें कुछ खामियाँ भी हैं:

  • नॉन्स पुन: उपयोगकुछ साइटें एक ही नॉन्स को कई प्रतिक्रियाओं में बार-बार इस्तेमाल करती हैं, जिससे CSP की सुरक्षा कमज़ोर हो जाती है। हाल ही में हुए एक अध्ययन "वेब सुरक्षा का नॉन्स" से पता चलता है कि कई वास्तविक साइटें ऐसा करती हैं। (arXiv)
  • परिनियोजन जटिलता: विरासत इनलाइन स्क्रिप्ट, तृतीय-पक्ष लाइब्रेरी और ब्राउज़र असंगतताओं का समर्थन करने से अक्सर नीतियों में ढील आ जाती है।

इस प्रकार, सीएसपी को एनकोडिंग और सैनिटाइजेशन का पूरक होना चाहिए, न कि उनका स्थान लेना चाहिए।

इंजीनियरिंग सर्वोत्तम अभ्यास: CI, लिंट, परीक्षण, निगरानी

मजबूत XSS सुरक्षा को क्रियान्वित करने के लिए:

  • ESLint / कोड लिंटर्स: अस्वीकृत सिंक (innerHTML, eval) के उपयोग पर प्रतिबंध या ध्वज लगाना, टेम्पलेट अभिव्यक्तियों पर संदर्भ एनोटेशन की आवश्यकता होती है।
  • CI में स्थैतिक और गतिशील विश्लेषण:
    • JS मॉड्यूल के लिए बहु-फ़ाइल स्थैतिक दाग विश्लेषण
    • फ़ज़ परीक्षण या विभेदक पार्सिंग परीक्षण
    • स्टेजिंग वातावरण में रनटाइम इंस्ट्रूमेंटेशन
  • इकाई / सुरक्षा परीक्षण: यह सुनिश्चित करने के लिए कि सही एन्कोडिंग लागू की गई है, यूनिट परीक्षणों में संदर्भ-आधारित पेलोड उत्पन्न करें (जैसे कि “XSS कमजोरियों का स्वचालित पता लगाना और मरम्मत करना” या “यूनिट परीक्षण के माध्यम से XSS का पता लगाना”) (arXiv)
  • निगरानी और चेतावनी: सीएसपी उल्लंघन रिपोर्ट, संदिग्ध प्रवाह के लिए उपकरणयुक्त रनटाइम अलर्ट, एन्कोडिंग विफलताओं के लॉग मेट्रिक्स एकत्र करें।
XSS हमलों के प्रकार और रक्षात्मक तकनीकें

पेनलिजेंट वन-क्लिक XSS स्कैन डिज़ाइन

नीचे एक प्रस्तावित डिज़ाइन विनिर्देश दिया गया है जिसे आप पेनलिजेंट के उत्पाद में एम्बेड कर सकते हैं एक-क्लिक XSS स्कैनिंग “प्लेबुक”.

कार्य वर्कफ़्लो (उच्च-स्तरीय)

  1. क्रॉल और JS रेंडरिंग - सभी पृष्ठों और JS-संचालित मार्गों की खोज करें।
  2. स्थैतिक विश्लेषण - उच्च जोखिम वाले सिंक और फ़ंक्शन का पता लगाने के लिए स्रोत कोड पर दाग प्रसार।
  3. टेम्पलेट स्कैनिंग - सामान्य XSS पेलोड को फायर करने के लिए टेम्प्लेटेड स्कैनर (जैसे Nuclei) का उपयोग करें।
  4. रनटाइम / डायनेमिक स्कैन - हेडलेस ब्राउज़िंग और इंस्ट्रूमेंटेशन का उपयोग करके, पेलोड इंजेक्ट करें और स्क्रिप्ट निष्पादन का पता लगाएं।
  5. रनटाइम दाग ट्रैकिंग - पृष्ठ रनटाइम को मापें और देखें कि क्या अविश्वसनीय डेटा खतरनाक सिंक तक पहुंचता है।
  6. पार्सिंग-विभेदक फ़ज़ परीक्षण - सैनिटाइज़र + ब्राउज़र को एज-केस मार्कअप फ़ीड करें और विचलन का पता लगाएं।
  7. सीएसपी और एसआरआई ऑडिट - हेडर, स्क्रिप्ट टैग का निरीक्षण करें, नॉन्स पुन: उपयोग, अनुपस्थित अखंडता विशेषताओं की जांच करें।
  8. रिपोर्ट पीढ़ी - PoCs, जोखिम रेटिंग, उपचार सुझावों के साथ कमजोरियों को इकट्ठा करें, और वैकल्पिक रूप से PR पैच उत्पन्न करें।

नमूना नाभिक टेम्पलेट (प्रतिबिंबित XSS)

आईडी: xss-reflect-basic जानकारी: नाम: रिफ्लेक्टेड XSS बेसिक लेखक: penligent-scan गंभीरता: उच्च अनुरोध: - विधि: GET पथ: - "{{BaseURL}}?q={{payload}}" पेलोड: पेलोड: - "  " मिलानकर्ता: - प्रकार: शब्द भाग: मुख्य शब्द: - "  "

आप गलत सकारात्मक परिणामों को कम करने के लिए संदर्भ-जागरूक पेलोड सेट (विशेषता, JS, URL) और हेडलेस सत्यापन की श्रृंखला का विस्तार करेंगे।

नमूना कार्य परिभाषा (JSON)

{ "name": "XSS क्विकस्कैन", "steps": [ {"id": "crawl", "type": "crawler", "params": {"start_url": "{{target}}", "render_js": true}}, {"id": "static", "type": "static_analysis", "deps": ["crawl"], "params": {"analyzers": ["multi-file-taint"]}}, {"id": "template_scan", "type": "scanner", "deps": ["crawl"], "params": {"templates": ["xss-reflect-basic"]}}, {"id": "dynamic", "type": "dynamic_scan", "deps": ["template_scan", "static"], "params": {"engine": "हेडलेस-इंस्ट्रूमेंटेड"}}, {"id": "dom_taint", "type": "runtime_taint", "deps": ["dynamic"], "params": {"agent": "instrumented-browser"}}, {"id": "parsing_diff", "type": "parsing_diff", "deps": ["dynamic"], "params": {}}, {"id": "audit_csp", "type": "csp_audit", "deps": ["crawl"], "params": {}}, {"id": "report", "type": "report_gen", "deps": ["dom_taint", "parsing_diff", "audit_csp"], "params": {"format": "pdf,html"}} ] }

रिपोर्ट और आउटपुट

प्रत्येक निष्कर्ष में शामिल हैं:

  • प्रकार (प्रतिबिंबित / संग्रहीत / DOM)
  • अवधारणा का प्रमाण (HTTP अनुरोध/प्रतिक्रिया, DOM स्नैपशॉट, स्क्रीनशॉट)
  • गंभीरता स्कोर
  • सुधार सुझाव (जैसे सही एनकोडर, सैनिटाइज़र कॉन्फ़िगरेशन, सुरक्षित API उपयोग)
  • वैकल्पिक रूप से एक पैच या PR कंकाल स्वचालित रूप से उत्पन्न करें

आप आंतरिक तकनीकी रिपोर्ट में प्रासंगिक साहित्य (जैसे ट्रस्टीमॉन का हवाला देना, विभेदक पत्रों का विश्लेषण करना) को भी लिंक कर सकते हैं।

नमूना कोड स्निपेट और सर्वोत्तम अभ्यास

रिएक्ट जैसी सेटिंग में कुछ उदाहरणात्मक सुरक्षित/असुरक्षित स्निपेट यहां दिए गए हैं:

असुरक्षित (असुरक्षित)

फ़ंक्शन UserGreeting(props) { return
; }

सुरक्षित संस्करण

DOMPurify को &#039;dompurify&#039; से आयात करें; फ़ंक्शन UserGreeting(props) { const clean = DOMPurify.sanitize(props.userContent, { ALLOWED_TAGS: [&#039;b&#039;,&#039;i&#039;,&#039;u&#039;,&#039;a&#039;], ALLOWED_ATTR: [&#039;href&#039;] }); return <div dangerouslysetinnerhtml="{{" __html: clean }} />;
}

या बेहतर:

फ़ंक्शन UserGreeting(props) { return <div>{प्रॉप्स.यूजरकंटेंट}</div>; // रिएक्ट स्वतः एस्केप हो जाएगा }

विशेषता मानों के लिए:

// Unsafe
<img src={userInput} />

// Safer
function safeUrl(u) {
  const doc = new URL(u, window.location.origin);
  if (doc.protocol === 'http:' || doc.protocol === 'https:') {
    return doc.toString();
  }
  return '/';  // fallback
}
<img src={safeUrl(userInput)} />

निष्कर्ष और अगले कदम

यह लेख निम्नलिखित को जोड़ता है: OWASP XSS रोकथाम धोखा पत्रक (व्यावहारिक नियम) के साथ आधुनिक अनुसंधान दिशाएँ (रनटाइम टैंट, पार्सिंग डिफरेंशियल, एमएल प्रीफ़िल्टर) एक मज़बूत, इंजीनियरिंग-अनुकूल सुरक्षा दृष्टिकोण तैयार करने के लिए। एक-क्लिक पेनलिजेंट स्कैन डिज़ाइन इन विधियों को उत्पादीकृत करने में मदद करता है—जिससे टीमों के लिए पाइपलाइनों को फिर से खोजे बिना मज़बूत सुरक्षा अपनाना आसान हो जाता है।

पोस्ट साझा करें:
संबंधित पोस्ट