حملات SQL Injection و XSS چیست؟ چگونه می توان از این حملات جلوگیری کرد؟

حملات 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 نیز سازگار است.کارکرد این نرم افزار آن گونه است که دستوراتی که از سمت کاربر به دیتابیس فرستاده می شود را بررسی کرده و اگر دستوری بصورت آشکار و یا در لیست سفید نباشد را مسدود می کند.ما در مقاله بالا سعی کردیم شما را با انواع این حملات و راه های دفاع از این حملات آشنا سازیم.اگر سوالی،انتقادی در رابطه به این مقاله دارید برای ما کامنت کرده و یا از طریق شبکه های اجتماعی با ما در تماس باشید.