ვებსაიტებზე დაუცველობის ერთ-ერთ ყველაზე გავრცელებულ კლასს ჰქვია "Cross-Site Scripting" ან "XSS". XSS დაუცველობა არის ის, სადაც შესაძლებელია მომხმარებელმა გამოიწვიოს JavaScript-ის შესრულება. არსებობს XSS დაუცველობის მრავალი განსხვავებული ვარიანტი, სიმძიმის განსხვავებული ხარისხით.
პრობლემა თავდამსხმელთან, რომელსაც შეუძლია JavaScript-ის შესრულება სხვა მომხმარებლების სესიებზე, არის ის, რომ შემდეგ თავდამსხმელს შეუძლია რაიმე გააკეთოს იმ ვებსაიტზე, რასაც მსხვერპლი ხედავს. ეს მოიცავს მსხვერპლთა გადამისამართებას გარე ვებსაიტებზე, ავთენტიფიკაციის ნიშნების მოპარვას და გადახდის დეტალების მონიტორინგს.
XSS დაუცველობის ყველაზე მძიმე ფორმა არის „შენახული“ ან „მუდმივი“ ჯვარედინი სკრიპტირება, სწორედ აქ არის შესაძლებელია თავდამსხმელმა შექმნას XSS დატვირთვა და შემდეგ წარადგინოს იგი, ასე რომ ის ინახება მონაცემთა ბაზაში. მონაცემთა ბაზაში შენახული XSS ექსპლოიტის საშუალებით შესაძლებელია, რომ მან გავლენა მოახდინოს სხვა მომხმარებლებზე დიდი ხნის განმავლობაში.
Cross-Site Scripting-ის კიდევ ერთი ფორმა არის „ასახული“, ეს ტიპი არ არის შენახული არცერთ მომენტში, სამაგიეროდ, დატვირთვა შედის ბრაუზერში. როგორც წესი, ამ ტიპის XSS არის ფიშინგ შეტევების ნაწილი, სადაც თავდამსხმელი ცდილობს მოატყუოს მსხვერპლი, რათა დააწკაპუნოს მავნე ბმულზე.
ზოგადად, XSS შეტევების უმეტესობას აქვს დატვირთვა სერვერზე გაგზავნილი რაღაც მომენტში, მაგრამ ზოგიერთი შეტევა არის მხოლოდ კლიენტის მხარეს, არასოდეს იგზავნება სერვერზე და პირიქით, გავლენას ახდენს მხოლოდ კლიენტის მხარეს JavaScript. ამას ეწოდება DOM-ზე დაფუძნებული XSS, რადგან ის რჩება JavaScript დოკუმენტის ობიექტის მოდელში, ან DOM-ში. ამ ტიპის დაუცველობის იდენტიფიცირება და მოგვარება განსაკუთრებით რთულია, რადგან ექსპლოიტები არასოდეს ჩანს სერვერის მიერ და, შესაბამისად, შეუძლებელია მათი დარეგისტრირება.
ისტორიულად XSS დაუცველობის წინააღმდეგ პრევენციის ტექნიკა არის მომხმარებლის მიერ წარმოდგენილი ყველა მონაცემის გაფილტვრა, ბლოკის სიების გამოყენებით JavaScript-ში მნიშვნელოვანი სიმბოლოების ან სიტყვების შემცველი ნებისმიერი შეტყობინების უარსაყოფად. ამან გამოიწვია შეიარაღების რბოლა ფილტრისთვის შემოვლითი გზების პოვნაში და ასევე თავიდან აიცილა ზოგიერთი ლეგიტიმური მომხმარებლის წარდგენა. სწორი გამოსავალი არის HTML ერთეულების გამოყენება მომხმარებლის მიერ გაგზავნილი მონაცემების დაშიფვრისთვის. HTML ერთეულების მოდულების ჩართვის შემთხვევაში, სიმბოლოები ავტომატურად იშიფრება ფორმატში, სადაც ბრაუზერმა იცის, აჩვენოს ისინი სწორ სიმბოლოებად, მაგრამ არა კოდად.