वेबसाइटों में भेद्यता के सबसे आम वर्गों में से एक को "क्रॉस-साइट स्क्रिप्टिंग" या "एक्सएसएस" कहा जाता है। XSS भेद्यताएं हैं जहां उपयोगकर्ता के लिए जावास्क्रिप्ट को निष्पादित करना संभव है। XSS भेद्यता के कई अलग-अलग प्रकार हैं, गंभीरता की अलग-अलग डिग्री के साथ।
एक हमलावर के अन्य उपयोगकर्ताओं के सत्रों में जावास्क्रिप्ट को निष्पादित करने में सक्षम होने के साथ समस्या यह है कि हमलावर के लिए वेबसाइट पर कुछ भी करना संभव है जो पीड़ितों को दिखाई देता है। इसमें पीड़ितों को बाहरी वेबसाइटों पर पुनर्निर्देशित करना, प्रमाणीकरण टोकन चोरी करना और भुगतान विवरण की निगरानी करना शामिल है।
XSS भेद्यता का सबसे गंभीर रूप "संग्रहीत" या "निरंतर" क्रॉस-साइट स्क्रिप्टिंग है, यह वह जगह है जहां एक हमलावर के लिए XSS पेलोड तैयार करना और फिर उसे जमा करना संभव है, इसलिए इसे डेटाबेस में सहेजा जाता है। डेटाबेस में सहेजे गए XSS शोषण के साथ, इसके लिए व्यापक समय अवधि में अन्य उपयोगकर्ताओं को प्रभावित करना संभव है।
क्रॉस-साइट स्क्रिप्टिंग का दूसरा रूप "प्रतिबिंबित" है, इस प्रकार को किसी भी बिंदु पर सहेजा नहीं जाता है, इसके बजाय, पेलोड को ब्राउज़र में शामिल किया जाता है। आमतौर पर, इस प्रकार का XSS फ़िशिंग हमलों का हिस्सा होता है, जहाँ एक हमलावर किसी दुर्भावनापूर्ण लिंक पर क्लिक करने के लिए पीड़ित को बरगलाने का प्रयास करता है।
आम तौर पर, अधिकांश एक्सएसएस हमलों में किसी बिंदु पर सर्वर पर पेलोड भेजा जाता है, लेकिन कुछ हमले होते हैं विशुद्ध रूप से क्लाइंट-साइड, सर्वर पर कभी नहीं भेजा जा रहा है और इसके बजाय केवल क्लाइंट-साइड को प्रभावित करता है जावास्क्रिप्ट। इसे DOM-आधारित XSS कहा जाता है क्योंकि यह JavaScript दस्तावेज़ ऑब्जेक्ट मॉडल या DOM में रहता है। इस प्रकार की भेद्यता को पहचानना और हल करना विशेष रूप से कठिन है क्योंकि सर्वर द्वारा शोषण कभी नहीं देखा जाता है और इसलिए लॉग इन नहीं किया जा सकता है।
ऐतिहासिक रूप से XSS कमजोरियों के खिलाफ रोकथाम तकनीक सभी उपयोगकर्ता द्वारा सबमिट किए गए डेटा को फ़िल्टर करना है, ब्लॉक-सूचियों का उपयोग करके जावास्क्रिप्ट में सार्थक वर्णों या शब्दों वाले किसी भी संदेश को अस्वीकार करने के लिए। इसने कुछ वैध उपयोगकर्ता-प्रस्तुतियों को रोकने के साथ-साथ फ़िल्टर के लिए बाईपास खोजने की हथियारों की दौड़ का नेतृत्व किया। उपयोगकर्ता द्वारा सबमिट किए गए डेटा को एन्कोड करने के लिए HTML इकाइयों का उपयोग करना सही समाधान है। एचटीएमएल एंटिटी मॉड्यूल सक्षम होने के साथ, वर्ण स्वचालित रूप से एक प्रारूप में एन्कोड किए जाते हैं जहां ब्राउज़र उन्हें सही प्रतीकों के रूप में प्रदर्शित करना जानता है लेकिन उन्हें कोड के रूप में नहीं मानता है।