حملات تزریق کد
تاریخچه
تاریخچه حفرههای امنیتی در معرض حملات XSS به سال 1996 و سالهای اولیه صفحات وب باز میگردد. نفوذگران در آن زمان که پروتکل HTTP جا افتاده بود و طراحان وبگاهها از زبانهای پردازهنویسی مانند جاوا اسکریپت سود میبردند، دریافتند وقتی کاربران معمولی وارد سایتی میشود میتوان به کمک کدنویسی در حفرههای امنیتی وبگاه، صفحه دیگری را در همان صفحه بارگذاری کرد سپس با سود بردن از جاوا اسکریپت دادههای کاربر مانند نام کاربری، گذرواژه و یا کوکی(Cookie)ها را دزدید.
در این هنگام رسانهها این مشکلات را به ضعف امنیتی مرورگرها نسبت داده بودند. شرکت ارتباطی Netscape که جزو اولین تولیدکنندگان مرورگرهای وب و همچنین سازنده زبان جاوا اسکریپت بود سیاست دامنه شخصی را به این زبان افزود که جلوی دسترسی به آدرسهای خارج از دامنه وبگاه را میگرفت و تا حدودی این حملات را محدود میکرد.[نیازمند منبع]
انواع حملات
سناریوهای مختلفی برای قرار دادن کد مخرب در سایتها به عنوان حمله وجود دارد:
- طراح سایت، خود کد مخرب را در صفحه قرار داشته باشد.
- حفره سایت ممکن است در سطح سیستمعامل یا شبکه ایجاد شده باشد.
- یک حفره دائمی در یکی از مکانهای عمومی وبگاه قرار گرفته باشد.
- قربانی بر روی یک لینک حاوی XSS مدل non-persistent یا DOM-based کلیک کند.
فیلتر کردن
فیلتر کردن را از دو منظر باید بررسی کرد. فیلتر کردن ورودیهای کاربر و فیلتر کردن خروجیها برای کاربر است.
- فیلتر ورودی:
- در این قسمت، برنامه نویس وظیفه دارد با فیلتر کردن ورودیهای کاربر، شکل و چینش کدهای مخرب را شناسایی کرده و آنها را فیلتر کند.
- فیلتر خروجی:
- در این قسمت، برنامه نویس وظیفه دارد با فیلتر کردن کدهای خروجی اجازه ایجاد حفرههای امنیتی و به طبع آن شکل گیری حملات XSS را متوقف کند.
روشهای خنثی کردن
- سود بردن از مرورگر مناسب.
- سود بردن از ابزارهای محدودکننده اجرای کد مانند NoScript
- کلیک نکردن بر روی لینک و آدرسهای ناشناس.
منابع
- The Apache Software Foundation. “Cross Site Scripting Info: Encoding Examples. ” http://httpd.apache.org/info/csssecurity/encoding_examples.html
- http://www.owasp.org/xss
- Jeremiah Grossman, Anton Rager. XSS Attacks. ISBN -10: 1-59749-154-3. Elsevier. 2007.
- Howard, Michael. “Some Bad News and Some Good News. ” MSDN Library. 21 October 2002