حملات SQL Injection و XSS چیست؟ چگونه می توان از این حملات جلوگیری کرد؟
امروزه بسیاری از ما در اپلیکیشن های تحت وب و وبسایت ها فعالیت بسیاری داریم. درواقع این ابزار جزء لاینفک زندگی ما شده اند.اما آیا این وبسایت ها و نرم افزار ها امن هستند؟
همانقدری که ما در وبسایت ها و برنامه های مختلف حضور داریم و یا حتی سازنده ی آن ها هستیم همانقدر هم باید احساس خطر کنیم و میزان آسیب پذیری آن ها را در نظر بگیریم.
در واقع هر چه افراد بیشتری در این دنیای بزرگ مجازی قرار می گیرند به همان نسبت هم باید به امنیت این فضا اهمیت بسیاری دهند.
در میان این حملاتی که در تمامی فضای اینترنت رخ می هد نام هایی نظیر SQL Injection و XSS را می شنویم.
اما این حملات در واقع چگونه وبسایت ها را تحت تاثیر خود قرار میدهند؟
حملات SQL Injection :این حملات نوعی حمله کامپیوتری است که مبتنی بر دیتابیس است.یعنی هدف مورد نظر این حملات دیتابیس وبسایت شما و اپلیکیشن تحت وب آسیب پذیر شماست.
مثال هایی از انواع حملات SQL Injection:
1- بازیابی داده های پنهان
2- از بین بردن منطق اپلیکیشن
3- حملات اتصال
4- بررسی دیتابیس
5- روش SQL Injection کورکورانه
بازیابی داده های پنهان: تغییر کوئری های دیتابیس و دریافت نتایج اضافی و هجو
از بین بردن منطق اپلیکیشن: تغییر کوئری ها برای مداخله و تغییر منطق برنامه و یا اپلیکیشن
حملات اتصال(UNION ATTACK) : بازیابی داده ها از جدول های مختلف دیتابیس
بررسی دیتابیس: استخراج اطلاعات دیتابیس که ورژن و ساختار دیتابیس را شامل می شود.
روش SQL Injection کورکورانه: زمانی که کوئری های که در اختیار شماست به اپلیکیشن برگشت داده نمی شوند.
حملات (XSS (Cross-Site Scripting
حمله XSS یک حمله معمول و معروف بین این حمله هاست.این حمله از ورودی های وبسایت شما صورت می گیرد.برای مثال محل جستجو در وبسایت ها و هر ورودی دیگری که ممکن است در سایت وجود داشته باشند و آسیب پذیر باشند. این حمله به گونه ای است که با استفاده از یک اسکریپت می شود به وبسایت قربانی حمله کرده و خسارات زیان باری را به وبسایت وارد شود.
این حملات بر سه نوع هستند:
1- حملات XSS مداوم یا XSS ذخیره شده
2- حملات XSS غیر مداوم یا XSS بازتابی
3- حملات XSS مبتنی بر DO
حملات XSS مداوم یا XSS ذخیره شده: این نوع از حملات XSS خطرناک ترین در نوع خود هستند. این حملات بصورتی است که ممکن است حمله کننده اسکریپتی را بصورت مداوم و همیشه در وبسایت شما قرار دهد و شما هرگز متوجه این موضوع نشوید.
این حملات معمولا در بستری از ورودی ها وبسایت مانند قسمت کامنت گذاری در وبسایت ها قرار می گیرد.
حملات XSS غیر مداوم یا XSS بازتابی: این حملات در بستر یک تقاضای خاص از سرور صورت می گیرد بصورتی که حمله کننده در بستر HTTP این تقاضا را از قربانی می کند.این حملات معمولا در حالت حملات Phishing صورت می گیرد.
حملات XSS مبتنی بر DOM: یک حمله پیشرفته از حملات XSS است که اسکریپت از سرور قربانی برنگشته و وارد آن نمی شود و فقط در مرورگر کاربرانی که از وبسایت قربانی استفاده می کنند، باقی می ماند
و اما چگونه از این حملات جلوگیری کنیم؟
فیلتر کردن کارکترها
یکی از راه های مقابله با SQL Injection فیلتر کردن کارکترهای مختلف است. برای مثال اغلب حملات SQL Injection با علامت Single Quotes (نقل قول تنها) صورت می گیرد.ما کافی است در ساختار سایت خود این کارکترها را فیلتر کرده و برای آن ها تبدیل خودکاری قرار دهیم. برای مثال میتوانیم با قرار دادن کد زیر، Single Quote را به Double Quote تبدیل کنیم تا اگر کاربری Single Quote را وارد کرد دریافتی ما Double Quote باشد.
<% Function SQLSecurity(ReplaceQuotes) SQLSecurity = Replace(ReplaceQuotes ,"'",""") End Function %>
البته شما می توانید کدهایی شبیه به کد بالا را نیز قرار دهید تا کارکترهای مختلفی را فیلتر کنید.
ایجاد محدودیت برای طول رکوردهای دیتابیس:
یکی از راه های مقابله با نفوذ SQL Injection ایجاد محدودیت تعداد کارکترها برای ورودی های شماست. برای ورودی های مختلف وبسایتتان متناسب با نیاز آن ورودی محدودیت کارکتر و یا عدد تعریف کنید تا کاربران در همان تعدادی که شما تعریف کردید بتوانند کارکتر و یا عدد وارد کنند.
بررسی نوع ریکوردها:
شما برای هر فیلد ورودی در وبسایت خود نیز باید نوع داده ای که که می خواهید در آن فیلد وارد شود را تعریف کنید. برای مثال در فیلد شماره تلفن تنها باید عدد وارد شود و اگر کاربر کارکتری بزند ورودی آن را نپذیرفته و در فیلد خود نمی نویسد.
ایجاد محدودیت اتصالات:
شما به عنوان دارنده وبسایت و یا اپلیکیشن خود بایستی در سطح دسترسی به دیتابیس قوانینی تعریف کنید. مثلا وقتی ادمین کل هستید دسترسی کامل به دیتابیس خواهید داشت و یا اگر کابر سایت هستید سطح دسترسی کمتری خواهید داشت. تعریف این سطح دسترسی به شما کمک می کند تا سطح آسیب پذیری سایت شما به شدت کاهش پیدا کند.
ایجاد لیست سیاه و سفید:
شما برای کاهش سطح آسیب پذیری وبسایت خود باید یک لیست سیاه و یک لیست سفید برای وبسایت خود تهیه کنید. این لیست سیاه متشکل از آیپی هایی است که در وبسایت شما خرابکاری کرده و یا قصد چنین کاری داشته اند. شما با شناسایی این آیپی ها باید آن را در لیست سیاه وبسایت خود قرار دهید تا از ورود آن ها به سایت خود جلوگیری کنید. تهیه این لیست ممکن است از سطح دسترسی افراد نیز خارج شده و به سطح کشوری برسد و یک کشور را به لیست سیاه وارد کنید.
استفاده از GreenSQL
اپلیکیشن GreenSQL و یا همان SQL سبز یک نرم افزار متن باز است که در واقع یک نوع فایروال دیتابیس است که وظیفه شناسایی و دفع حملات SQL Injection را داراست. این نرم افزار با MySQL نیز سازگار است.
کارکرد این نرم افزار آن گونه است که دستوراتی که از سمت کاربر به دیتابیس فرستاده می شود را بررسی کرده و اگر دستوری بصورت آشکار و یا در لیست سفید نباشد را مسدود می کند.
ما در مقاله بالا سعی کردیم شما را با انواع این حملات و راه های دفاع از این حملات آشنا سازیم.اگر سوالی،انتقادی در رابطه به این مقاله دارید برای ما کامنت کرده و یا از طریق شبکه های اجتماعی با ما در تماس باشید.
مطلبی دیگر از این انتشارات
آموزش کار با Dreamweaver و طراحی یک سایت ساده
مطلبی دیگر از این انتشارات
بسته خودت را بساز!
مطلبی دیگر از این انتشارات
تقویم لحظه، برنامهای به زبان برنامهنویسی C