XSS qanday paydo bo‘ladi?
Ishonchsiz ma’lumot brauzerda faol HTML/JavaScript sifatida talqin qilinsa, foydalanuvchi sessiyasi doirasida amal bajarilishi mumkin. Stored, reflected va DOM yo‘llari bor. Muammo faqat script tegida emas; atribut va URL kontekstlari ham muhim.
Matnni matn sifatida chiqaring
Django template autoescape’ni saqlang. Oddiy DOM matni uchun textContent, HTML uchun esa zarur bo‘lsa ishonchli sanitizer ishlating. safe yoki mark_safe’ni mijoz ma’lumotiga qo‘llamang. HTML escaping JavaScript yoki CSS kontekstiga avtomatik mos kelmaydi.
Qatlamli himoya
CSP ta’sirni kamaytirishga yordam beradi, lekin to‘g‘ri rendering o‘rnini bosmaydi. HttpOnly cookie o‘qilishini cheklaydi, ammo zararli kod foydalanuvchi nomidan so‘rov yuborishi mumkin. Misolda oddiy b tegi xavfsiz matnga aylanadi, hech qanday brauzer hujumi bajarilmaydi.
Python’da ko‘rib chiqamiz
from html import escape
untrusted = "<b>salom</b>"
print(escape(untrusted))Misolni
Mustaqil mashq
Qo‘shtirnoq va ampersand bor satrni escape qiling. Django’da normal chiqish va noto‘g‘ri safe ishlatilishining farqini konspektga yozing. Haqiqiy foydalanuvchiga payload yubormang.