XSS (Cross-Site Scripting) uchun potensial kirish nuqtalarini aniqlash uchun veb-ilovani tahlil qilib, foydalanuvchi kiritadigan input maydonlarini aniqlashimiz kerak (masalan, qidiruv maydonlari). Agar bu inputlar tozalamasdan (ya’ni unsanitized holatda) keyingi sahifalarda chiqarilsa, bu joylar XSS uchun imkoniyat yaratadi.

Agar bunday kirish nuqtasini topsak, maxsus belgilarni kiritib, ularning qanday ko‘rinishini kuzatamiz. Agar maxsus belgilar filtrlanmay qaytib chiqsa, bu joy XSS zaifligiga ega bo‘lishi mumkin.

XSS aniqlash uchun ishlatiladigan eng keng tarqalgan maxsus belgilar quyidagilar:

< > ' " { } ;

Listing 23 – HTML va JavaScript uchun maxsus belgilar

Endi bu belgilar qanday maqsadda ishlatilishini tushuntirib o‘tamiz.

HTML’da "<" va ">" belgilaridan elementlarni belgilash uchun foydalaniladi, ya’ni bu belgilar HTML hujjatini tashkil etuvchi komponentlarni ifodalaydi.

JavaScript’da esa "{" va "}" belgilaridan funksiya e’lon qilishda foydalaniladi.

Yagona qo‘shtirnoq (') va ikki qo‘shtirnoq (") belgilar esa matnli qiymatlarni (ya’ni string’larni) belgilash uchun xizmat qiladi.

Nuqta-vergul (;) esa bayonot (statement) tugaganini bildiradi.

Agar dastur bu belgilarni olib tashlamasa yoki ularni kod sifatida ko‘rishining oldini olmasa (ya’ni encoding qilmasa), bu holda ilova ushbu belgilarni kod sifatida talqin qilishi mumkin. Bu esa qo‘shimcha kodlarning bajarilishiga imkon yaratadi va XSS zaifligini yuzaga keltiradi.

Turli kodlash (ya’ni encoding) turlari mavjud bo‘lsa-da, veb-ilovalarda eng ko‘p uchraydiganlari quyidagilardir:

Agar biz yuqoridagi maxsus belgilarni sahifaga joylasha olsak, brauzer ularni kod elementi sifatida qabul qiladi. Bu orqali biz o‘zimiz yozgan JavaScript kodini sahifaga inject qilib, u qurbon brauzerida yuklanishi bilan bajarilishiga erishamiz.

Biroq biz ishlatadigan belgilar to‘plami bizning input’imiz sahifaning qaysi qismiga joylashtirilayotganiga bog‘liq bo‘ladi.

Masalan: