خروجی مدل را داده نامطمئن بدانید. برای نمایش در صفحه، متن را متناسب زمینه کدگذاری کنید و اگر HTML لازم است فقط ساختار مجاز پاکسازیشده را بپذیرید.
مسئله را درست تعریف کنیم
قالب ظاهراً بیخطر ممکن است لینک، ویژگی یا نشانی نامجاز داشته باشد. دستور «HTML امن بساز» تضمین نمیکند مرورگر خروجی را بدون اثر جانبی اجرا کند.
روش اجرا
- خروجی متنی را با مسیر امن نمایش متن وارد صفحه کنید.
- لینکها و قالبهای مجاز را با قواعد مستقل اعتبارسنجی کنید.
- نمونههای ساختگی را در محیط جدا برای عدم اجرا بررسی کنید.
نمونه آموزشی
در مثال آموزشی، مدل جملهای دارای نشانههای زاویهدار برمیگرداند. نمایش متن باید همان نشانهها را نشان دهد و آنها را به عنصر فعال تبدیل نکند. برای لینک هم فقط مقصد و طرح مجاز نمایش داده شود؛ متن زیبا مجوز لینک نیست.
آزمون تکمیلی برای تصمیم عملی
در تمرین، خروجی مدل را ابتدا یک داده نامطمئن در نظر بگیرید و معلوم کنید قرار است کجا نمایش داده شود: متن معمولی، ویژگی یک عنصر، لینک یا HTML محدود. این محلها قواعد یکسانی ندارند. اگر هدف فقط نمایش متن است، انتخاب روش نمایش متنی امن از تفسیر مستقیم HTML روشنتر است. اگر قالب HTML واقعاً لازم است، سیاست پاکسازی معتبر و مجموعه محدود عناصر مجاز باید مشخص باشد. دستور دادن به مدل برای تولید خروجی امن، جای حفاظت جزء نمایشدهنده را نمیگیرد.
آزمون را تنها به پاسخ عادی محدود نکنید. در محیط آزمایش، متن دارای نشانههای قالب و لینک نامعتبر را با انتظار قبلی بررسی کنید؛ نیازی به اجرای محتوا در محیط واقعی مشتری نیست. بعد از ذخیره و نمایش دوباره، همان کنترل باید برقرار بماند و مسیر دیگری حفاظت را دور نزند. در کاربرگ محل درج، روش نمایش و نتیجه واقعی را جدا بنویسید. موفقیت چند نمونه یا استفاده از یک فریمورک بهتنهایی نبود XSS را اثبات نمیکند؛ مسیرهای خروج از حفاظت پیشفرض نیز باید بررسی شوند.
جدول کار برای همین موضوع
| فیلد ثبت | کاربرد در تصمیم |
|---|---|
| نوع خروجی | متن ساده در برابر HTML |
| زمینه نمایش | بافت متن معمولی با script فرق دارد |
| قالب مجاز | فقط تگ و ویژگی صریحاً مجاز |
| کنترل لینک | طرح نشانی و مقصد لینک جدا بررسی شود |
| نتیجه عدم اجرا | نشانههای زاویهدار باید متن بمانند |
| روش نمایش | برای متن، مسیر نمایش متن امن را به کار ببرید |
فایل قابل استفاده
دریافت فرم CSV این راهنما. هر سطر را با اطلاعات پروژه خود تکمیل کنید. خانه نامعلوم را نامشخص بگذارید؛ نبود شاهد را با عدد صفر یا تأیید جایگزین نکنید. فایل شامل اطلاعات مشتری واقعی نیست و برای ثبت بررسی به کار میرود.
محدودیت و تصمیم بعدی
این کنترل جای همه دفاعهای مرورگر و برنامه را نمیگیرد؛ کدگذاری باید با زمینه نمایش هماهنگ باشد.
منبع فنی برای مطالعه بیشتر
OWASP: Cross Site Scripting Prevention. مثالها و فرم این مطلب برای آموزش طراحی شدهاند و نتیجه مشتری یا آزمون محصول نیستند.
ادامه مطالعه مرتبط
پس از نمایش امن متن، مقصد لینک هم به کنترل جداگانه نیاز دارد؛ پاسخ چت درست است اما لینک خراب؛ چکلیست مقصد پاسخ را ببینید.
برای بررسی فنی دقیقتر، راهنمای پیشگیری XSS در OWASP را بخوانید؛ مثال و کاربرگ این مقاله آموزشیاند و تأیید امنیت سامانه واقعی نیستند.