مقابله با حملات XSS در Asp.Net
مقابله با حملات XSS در AspNet (یک بار برای همیشه)
جلوگیری از حملات ایکس اس اس
حملات XSS که مخفف Cross Site Scripting هست به معنی تزریق اسکریپت غیر مجاز توسط هکر توی صفحه ای که توسط دیگران دیده میشه
حالا این حمله کی اتفاق می افته؟ مثلا وقتی هکر بتونه توی قسمت ثبت نظرات مقداری کد جاواسکریپتی یا … تزریق کنه که مثلا کار این کد کرش کردن صفحه یا دزدین کوکی های کاربر هست.
حالا هر کاربری که بیاد و نظرات روببینه، کد های تزریق شده توسط هکر روی مرورگر اون کاربر اجرا میشه و به … میره
خود AspNet به صورت پیشفرض جلوی هرگونه تزریق رو توی input های صفحه میگیره.
ولی از طرفی وقتی یک text editor مثل ckeditor یا tiny mce میگذاریم توی صفحه برای ارسال نظر، واسه اینکه امکان ارسال تگ های html باشه باید خاصیت AllowHtml روبه Property مورد نظر بدین یا خاصیت ValidateInput اون Action رو برابر false قرار بدین
در این صورت در ارسال تگ های html و script از سمت کاربر به سرور هیچ محدودیتی اعمال نمیشه.
خب بعضی جا ها خوبه مثلا موقع ثبت نظر باید بتونه تگ های html وارد بشه ولی فقط بعضی از تگها مثل <b> ، <i> ، <br/> و .. (ولی تگ هایی مثل style – script و یا iframe نباید مجاز باشه)
برای حل این مشکل ماکرسافت کتابخانه سورس بازی رو ارائه کرده که در آدرس زیر می بینید
http://wpl.codeplex.com
با استفاده از این library میتونین تگ های html و script ها رو حذف کنین. و یا یک سری تگ ها رو مجاز و بقیه تگ ها رو غیر مجاز اعلام کنین.
و برای اینکه خیال خودتون رو از این حمله راحت کنین بهتره این آموزش رو هم مطالعه کنین
http://goo.gl/bI7K17
منبع: Asp.Net MVC