
نام کاربر، پیام تیکت و متن مقاله میتوانند حاوی نشانههای HTML باشند. برنامه نباید این دادهها را بدون تصمیم مشخص به کد قابل اجرای مرورگر تبدیل کند.
نوع نمایش هر داده را مشخص کنید
متن ساده باید در زمینه HTML به شکل مناسب escape شود. دادهای که داخل ویژگی، URL یا جاوااسکریپت قرار میگیرد، نیازهای همان زمینه را دارد. یک تابع عمومی بدون توجه به محل مصرف، همه خطرها را حل نمیکند. در رابط پیامرسان، استفاده از textContent برای متن پیام معمولاً از ساخت innerHTML خام مناسبتر است.
محتوا را بدون نیاز، HTML آزاد نگیرید
اگر ویرایشگر مقاله فقط به تیتر و فهرست نیاز دارد، متن ساده با قواعد محدود میتواند سطح پیچیدگی را کم کند. برای HTML غنی، پاکسازی با فهرست مجاز و ابزار مناسب لازم است. دسترسی ادمین نیز دلیل خوبی برای اعتماد کامل به هر متن ذخیرهشده نیست.
لایههای مکمل داشته باشید
CSP میتواند دامنه اجرای اسکریپت و منابع را محدود کند، اما جای escape و کنترل داده را نمیگیرد. پیامهای خطا و پیشنمایشها را هم بررسی کنید؛ آسیبپذیری ممکن است فقط در یک گزارش مدیریتی ظاهر شود.
- همه ورودیهای قابل نمایش را داده نامطمئن بدانید.
- HTML و متن ساده را در مدل محتوا تفکیک کنید.
- URL و فایل SVG بارگذاریشده را بدون بررسی نپذیرید.

