SQL Injection Attack
چکیده:
در این تحقیق با مفهوم حملات تزریق آشنا می شویم و انواع حملات و مثال هایی از آنها ارائه می گردد. انتخاب این مقوله، علاقه مندی هکرها به استفاده از این روش برای حمله به یک پایگاه داده و سرقت اطلاعات حساس، است. دلیل محبوبیت و اثر بخشی حملات تزریق این است که بطور موثری می توانند با وجود فایروال و سیستم های تشخیص نفوذ،باز به لایه داده ها دسترسی پیدا کنند.
مقدمه :
حملات تزریق زمانی رخ می دهد که برنامه داده هایی را از کاربر دریافت کند و از آنها در ساخت جملات SQL استفاده نماید ،بی آنکه روی داده ها اعتبار سنجی (validating) و پاکسازی (sanitizing) صورت گیرد. در واقع هدف از اینگونه حملات ،داده های ساکن در یک پایگاه داده می باشد که از طریق Firewall محافظت می شوند. از این روش برای سرقت داده های حساس، تغییر یا تخریب داده، اجرای دستورات admin روی دیتابیس و یا حتی در مواردی در اختیار گرفتن مکانیزم کل ماشین، استفاده می شود.
در سالهای اخیر هدف از اینگونه حملات بیشتر ذخیره کردن داده های مخرب در دیتابیس و انتشار آنها از طریق وب سایت هایی که میزبان این دیتابیس ها هستند، بوده است.
شکل زیر بیانگر یک نمونه از اینگونه حملات می باشد:
چه کسانی و در چه سطحی باید با اینگونه حملات آشنایی داشته باشند؟
در هر سازمان مهندسی چهار گروه اصلی وجود دارند که هریک به نحوی با موضوع امنیت داده ها سر و کار دارند. این چهار گروه عبارتند از : مسئول پروژه ، معمار ، توسعه دهنده برنامه ، تستر
۱- مسئول پروژه (Business Decision Maker)
مسئول پروژه به عنوان تصمیم گیرنده نهایی و تعیین کننده خط مشی برنامه بر اساس زمان تحویل کار، منابع انسانی و بودجه تعریف شده برای آن، شناخته می شود، بنابراین با مسئله امنیت به عنوان نیاز مهم مشتری باید آشنایی داشته باشد و بتواند مدیریت لازم را برای هزینه های موجود انجام دهد.
به منظور تعیین اولویت های کاری در زمینه امنیت، بر اساس نیازهای مشتری و بودجه تعریف شده برای کار، مسئول پروژه باید با حملاتی که بر روی سایر پروژه های مشابه صورت گرفته، آشنایی کامل داشته باشد. یعنی بداند که چه مواردی پروژه اش را تهدید می کنند.
۲- معمار (Architect)
معمار یا همان مسئول طراحی فنی پروژه، نیازمند آشنایی با مفاهیم امنیت در جزئیات می باشد، چرا که معمار مسئول طراحی اصول برای برنامه نویس ها است که بر اساس این اصول اهداف پروژه پیاده سازی می شوند. از طرفی مسئولیت پیگیری و تایید اشتباهات امنیتی در کد که گاها منجر به هزینه های اضافی می گردد، با معمار است. بنابراین مسئول طراحی فنی پروژه باید با انواع حملات آشنایی داشته باشد و تشخیص دهد که هرکدام در چه دسته ای قرار میگیرند. همچنین از راهکارهای لازم برای پیشگیری و مقابله با اینگونه حملات ،مطلع باشد.
۳- توسعه دهنده (Developer)
مسئول پیاده سازی برنامه در قالب معماری طراحی شده برای آن. توسعه دهنده برنامه باید با روش های رفع مسائل امنیتی ناشی از خطاهای کدی، آشنایی داشته باشد و از بهترین روش های برنامه نویسی امن ،بمنظور داشتن کدی امن و مناسب، استفاده نماید.
۴- تستر (Tester/QA)
به منظور اطمینان حاصل کردن از امن بودن کد در مقابل حملات تزریق، باید بتوان شبیه یک حمله کننده فکر کرد و اندیشید. لازمه ی اینکار آشنایی با روش های حمله و اجرای آنهاست. بنابراین تستر باید به تمام نقاط برنامه تسلط داشته باشد و قادر بر اجرای انواع حملات بر روی نقاط ضعف برنامه باشد.
دسته بندی حملات تزریق:
حملات تزریق دستورات SQL را می توان به سه نوع متفاوت دسته بندی کرد:
۱- حملات مرتبه اول ( First-order injection )
حملات مرتبه اول ساده ترین نوع حملات می باشند. در اینگونه حملات، فرد حمله کننده رشته ای مخرب را به عنوان ورودی وارد می نماید و در نتیجه ساختار دستور SQL تغییر یافته و مطابق خواسته حمله کننده اجرا می شود. در این حملات، معمولا نتیجه حمله در همان زمان قابل مشاهده می باشد.
۲- حملات مرتبه دوم ( Second-order injection )
در حملات مرتبه دوم، حمله کننده، داده ای مخرب را که به نظر صحیح می آید، به محل نگهداری داده ها (مثل عناصر یک جدول) تزریق می کند و با انجام سایر عملیات روی آن دیتا سورس به نتیجه دلخواه می رسد، در واقع نتیجه حمله توسط اجراهای دیگر مشخص می گردد.
۳- حملات تزریق از طریق بریدن قسمتی از دستورات SQL ( SQL injection by truncation )
با سایز بافرها بازی می کند و با وارد نمودن و ایجاد داده ای که طول بیشتری از نگهدارنده داشته باشد، باعث حذف بقیه رشته می گردد.
انواع معمول حملات تزریق در دستورات SQL :
یکی از حملات معمول استفاده از نقاط آسیب پذیر صفحات وب است. در این حالت حمله کننده عملیات تزریق خود را در بخشی از داده های ورودی صفحات وب وارد می نماید و بدین ترتیب در همان چهارچوب تعریف شده برای اجرای دستورات، حمله خود را انجام می دهد. مهاجمان معمولا در حملات خود از دو روش زیر استفاده می کنند :
- استفاده از دستور UNION Select ، بمنظور دزدیدن اطلاعات حساس از پایگاه داده
استفاده از چندین دستور SQL در کنار هم، بمنظور از بین بردن دیتاها یا اجرای دستورات مورد نظر حمله کننده بر روی دیتابیس سرور.
مثال هایی از انواع حملات :
۱- Tautologies attack
در این نوع حملات به قسمت شرطی دستور، کدهایی اضافه می شود و بیشتر بمنظور فرار از اهراز هویت و استخراج داده ها از دیتابیس است. بعنوان مثال بجای نام کاربری در ورودی می توان عبارت هایی نظیر ‘or 1=1 ({, ‘ or 1=1–,’ or 1=1/* وارد نمود.
=Select accounts from Users where login =’’or 1=1 — and pass =’’ and pin
نتیجه اینگونه حملات در همان لحظه قابل مشاهده است.
۲- Illegal/logically incorrect queries attack
در این نوع حملات سعی بر این می شود که با وارد کردن عباراتی نادرست، از طریق پیام خطایی که سیستم می دهد، اطلاعاتی را راجع به وضعیت پایگاه داده بدست آورد. ایجاد خطاهای نحوی برای شناسایی پارامترهای آسیب پذیر مورد استفاده قرار می گیرد و خطاهای منطقی می توانند نام جداول و یا ستون ها را برگردانند. از خطاهای تبدیل نوع هم برای بدست آوردن نوع داده یک ستون خاص و یا استخراج داده استفاده می شود. بعنوان مثال فرض کنید در قسمت PIN عبارت زیر را وارد نماییم:
((’Convert (int, (select top1 name from sysobjects where xtype =’u
دستور sql بصورت زیر اجرا می گردد:
Select accounts from Users where login = ’’ and pass =’’ and pin = Convert (int, (select top1 name from) sysobjects where xtype =’u’)
پیام خطایی که sql میدهد بصورت زیر می باشد که بیانگر نام پایگاه داده ، نام جدول و نوع ستون است:
Microsoft OLE DB provider for sql server (0x80040E07) Error converting nvarchar value ‘CreditCards’ to a column of data type.
از نتیجه حاصل شده ، فرد مهاجم برای حملات بعدی خود استفاده می نماید.
۳- Union query attack
به منظور تغییر رکوردهای برگشتی از پایگاه داده برای فرار از احراز هویت و یا استخراج داده، مورد استفاده قرار می گیرد. بعنوان مثال فرض کنید عبارت زیر را در قسمت login وارد نماییم:
‘Union Select cardNo from CreditCards where accountNo = 10032–
دستور sql بصورت زیر اجرا می گردد:
Select accounts from Users where login =’’Union Select cardNo from CreditCards where accNo = 10032–and pass=’’ and pin = ‘’
با اجرای این دستور اطلاعات جدول دوم نیز برای شرط مورد نظر نمایش داده می شود.
۴- Piggy-Backed queries attack
در این روش query های دیگری به query اصلی اضافه می شوند با هدف منع سرویس، تغییر داده، استخراج داده و یا اجرای دستورات از راه دور. بعنوان مثال فرض کنید عبارت زیر را درفیلد pass وارد نماییم:
‘; drop table User–
دستور sql بصورت زیر اجرا می گردد:
Select accounts from Users where login=’doe’ and pass=’ ‘; drop table User–and pin = 123
نتیجه این دستور پاک شدن تمام جداول کاربران است.
۵- Store procedures attack
اینگونه حملات شبیه به حملات قبلی هستند با این تفاوت که یکی از روالهای استاندارد دیتابیس به بخشی از query اضافه می شود . بعنوان مثال استفاده از روال SHUTDOWN در فیلد pass :
Select accounts from Users where login = ‘doe’ and pass = ‘’; SHUTDOWN –and pin=
با اجرای این دستور پایگاه داده خاموش می شود و برای مدتی نمی توان استفاده نمود.
۶- Inference attack
از این روش بیشتر به منظور شناسایی پارامترهای آسیب پذیر برنامه و کسب اطلاعات استفاده می شود. به مثال زیر توجه کنید، در این مثال سعی بر این است که از طریق وارد کردن دستورات مختلف متوجه شد که آیا برنامه امن است یا ناامن:
۱) Select accounts from Users where login = ‘legalUser’ and 1=0 — ‘ and pass =’’ and pin =0
۲) Select accounts from Users where login=’legalUser’ and 1=1 — ‘ and pass=’’ and pin = 0
چنانچه صفحه امن باشد پیام خطای نامعتبر بودن Login را می دهد ولی اگر صفحه ناامن باشد دستور دوم بدون خطا اجا می شود و نشان دهنده آسیب پذیر بودن پارامتر login است.
در مثال بعدی نشان می دهیم که چگونه می توان از طریق تاخیر در جواب query اطلاعاتی را بدست آورد. فرض کنید مقدار زیر را در فیلد login وارد نماییم :
LegalUser’ and ASCII (Substring ((select top 1 name from sysobjects) 1, 1))>x Wait for 5–
دستور sql بصورت زیر اجرا می گردد:
Select accounts from Users where login=’ LegalUser’ and ASCII (Substring ((select top 1 name from sysobjects) 1, 1))>x Wait for 5– and pass=’’ and pin=0
با تغییر مقادیر x و میزان تاخیر در جواب ، طی چند مرحله می توان نام اولین جدول را بدست آورد.
در این بخش بیشتر بر روی حملات مرتبه اول و دوم تمرکز داشتیم و صحبتی از حملات سرریز بافر به میان نیامد. در بخش بعدی در مورد چگونگی حملات سرریز صحبت می نماییم و روش های پیشگیری و مقابله با حملات را مورد بررسی قرار می دهیم.
Truncation and Modification attack
همان طور که مشاهده نمودید در تمامی مثال های قبلی آنچه سبب می شود فرد حمله کننده بتواند عبارت مورد نظر خود را به دستور SQL تزریق نماید و جواب گیرد، استفاده از کاراکتر (‘) است . چنانچه کاربر مجاز به استفاده از این کاراکتر باشد، مکانیزمی برای هندل کردن آن باید در نظر گرفته شود. برای این منظور SQL دو متد معرفی کرده است :
۱- QuoteName(character-string , quote-character)
این تابع قبل از کاراکتر ‘ ، یک کاراکتر ‘ دیگر اضافه می نماید
۲- Replace (string-expression, string-expression2, string-expression3)
با استفاده از این تابع به جای هر کاراکتر ‘ ، دو کاراکتر ‘ قرار می دهیم.
فرض کنید در مثال زیر برای مقابله با حملات تزریق، از دستور QuoteName استفاده نمودیم :
Create Procedure sp-setPassword
,(@userName varchar (25
,(@old varchar (25
(@new varchar (25
AS
(Declare @command varchar (100
Set @command = ‘update Users set password=’’’ + QuoteName (@new,’’’’) + ‘’’ where username=’’’+ QuoteName (@userName,’’’’) + ‘’’ and password=’’’+ QuoteName (@old, ‘’’’)
همانطور که مشاهده می نمایید متغیر command می تواند پذیرای رشته ای بطول ۱۰۰ کاراکتر باشد. فرض نماید مهاجم عبارت ‘’’’’’’’’’’’’’’’’’!Abb1 را در فیلد پسورد وارد می نماید (۱۸ تا کاراکتر ‘ ،یک علامت، یک حرف بزرگ، دو حرف کوچک و یک عدد) و عبارت administrator را در فیلد username ، بدلیل استفاده از متد QuoteName ، قبل از هر کاراکتر ‘ یک کاراکتر دیگر قرار می گیرد و این سبب افزایش طول رشته می گردد و سرریز رخ می دهد و مقدار متغیر command بصورت زیر می شود:
Update Users set password =’‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’!Abb1’ where userName=’administrator’
بنابراین کاربر تنها با دانستن نام کاربری می تواند پسورد همه کاربران را تغییر دهد. بنابراین در هنگام استفاده از این متدها باید حداکثر دقت را به خرج داد.
روش های پیشگیری و مقابله با حملات :
به منظور پیشگیری از حملات ومقابله با آنها، موارد زیر در هنگام طراحی برنامه های کاربردی باید در نظر گرفته شوند :
- اعتبار سنجی و فیلتر کردن داده های ورودی و پاک سازی از یک سری از لیترال ها
داده ورودی باید عاری از هرگونه کاراکتری باشد که سبب ایجاد حملات تزریق می گردد. البته این روش به تنهایی نمی تواند مقابل همه ی حملات را بگیرد مانند حملات XSS و یا حملات ناشی از سرریز بافر. برای این منظور می توان اقدامات زیر را انجام داد:
- استفاده از لیست سفید (White List)
- تعریف کاراکترهای مجاز و قابل قبول برای ورودی مورد نظر مثلا استفاده از regular expression ها
- تعیین فرمت برای داده ورودی، مثل email,Date,zipCode
- انتخاب یکی از مقادیر در ورودی های ثابت مثل لیست ها
- محدود کردن طول ورودی یا عدم استفاده از کاراکترهای non printable
- استفاده از دستور Escape
استفاده از این متد در پایگاه داده نیاز به دقت بالایی دارد.بطور معمول تلاش باید بر این باشد که اصلا اجازه ورود کاراکترهای مشکل زا به پایگاه داده نشود که بعد لازم به کنترل آنها باشیم.
- استفاده از پارامتر ورودی برای query ها.
ساخت دستورات SQL بصورت پویا و از طریق الحاق چندین رشته با هم ، این اجازه را به حمله کننده می دهد که query دلخواه خود را بسازد و اجرا نماید ، در حالیکه استفاده از پارامتر به میزان قابل توجهی جلوی اینگونه حملات را می گیرد.
- استفاده از روال ها ( store procedure ) .
در هنگام استفاده از روال ها، بدلیل چک کردن نوع پارامترهای ورودی، تا حد زیادی می توان به کاهش تهدید تزریق کد در پایگاه داده، کمک کرد. اگر حمله کننده داده ای وارد نماید که با نوع در نظر گرفته شده برای روال مطابقت نداشته باشد، برنامه پیام خطا می دهد و از اجرای دستور خودداری می کند . طبیعتا هندل کردن این موارد باید در داخل نرم افزار صورت گیرد. با این حال در صورتیکه روال از یک رشته دستکاری شده در کد استفاده کند و دستور EXECSQL را فراخوانی نماید، هندل کردن نامناسب ورودی کاربر در کد منجر به حملات تزریق می گردد.
- مزیت امنیتی : محدود کردن دسترسی کاربران به استفاده از روال ها و جلوگیری ار ساخت query های دینامیک در بدنه برنامه
- مزیت غیر امنیتی: نگهداری و جمع آوری کدهای SQL دریک مکان و دور از دسترسی کاربران
نکته: توجه داشته باشید که این خود روال نیست که از حملات جلوگیری می نماید بلکه بدلیل پنهان کردن لایه های دیتابیس از دید حمله کننده، به جلوگیری و مقابله با اینگونه حملات کمک می کند.
- رمزنگاری داده های حساس
- صدور مجوز برای استفاده از دستورات SQL (Grant command).
این یک روش دفاعی در عمق کار است. فرض کنید که حمله کننده به هر طریقی موفق شود باگی در سیستم پیدا کند و وارد شود، حال چه باید کرد؟ در این روش به هر روال مجوزی اعطا می شود و مشخص می نماید چه کاربران و برنامه هایی می توانند روال مورد نظر را اجرا نمایند. این یک روش دفاعی فوق العاده است چرا که اگر مهاجم تلاش برای دسترسی به هر شی از پایگاه داده داشته باشد، پایگاه داده با استفاده از مجوزها، جلوی حمله را می گیرد.
با پیاده سازی موارد ذکر شده در برنامه، از حملات تزریق مرتبه اول تا حد زیادی جلوگیری می شود اما بمنظور تامین امنیت بیشتر و کاهش حملات انواع دیگر، دوشرط دیگر هم باید رعایت شوند:
- استفاده صحیح و مناسب از لیترال ها و جداکننده ها در تعریف شناسه ها در (استفاده از دستور Escape)
- کنترل سایز بافر و هندل کردن آن بمنظور جلوگیری از سرریز شدن و بریدن قسمتی از دستور
معرفی تکنیک های خودکار برای تشخیص و جلوگیری از حملات SQL :
- Waves : یک تکنیک جعبه سیاه برای تست برنامه های وب. این تکنیک با استفاده از یک web crawler ، تمامی نقاط یک برنامه وب را که می تواند برای تزریق sql مورد استفاده قرار گیرد، معرفی می کند. سپس براساس فهرستی از الگوها و تکنیک های حمله، حملاتی را که این نقاط را هدف قرار می دهند،طراحی میکند. سپس waves پاسخ برنامه را به این حملات بررسی کرده و با استفاده از تکنیک یادگیری ماشین، روش های شناسایی حمله خود را بهبود می بخشد.
- JDBC_checker : تکنیکی است که نوع تصحیح پرس و جوهای sql تولید شده بصورت پویا را، به شکل ایستا بررسی می کند. این تکنیک با هدف تشخیص و جلوگیری از حملات معمول sql طراحی نشده است، ولی می ت واند برای جلوگیری از حملاتی که از امتیاز عدم تطابق انواع، بهره می گیرند، در یک رشته پرس و جویی که بصورت پویا تولید شده است، مورد استفاده قرار گیرد.
JDBC_checker قادر است یکی از علت های اصلی آسیب پذیریهای حملات تزریق sql، یعنی بررسی نامناسب بودن نوع ورودی را تشخیص دهد.
- AMNESIA : مبتنی بر مدلی است که تحلیل ایستا و نظارت زمان اجرا را ترکیب می کند. در فاز ایستای این تکنیک، از تحلیل ایستا برای ساختن مدل هایی ار انواع مختلف پرس و جوهایی که یک برنامه به طور طبیعی می تواند در هر نقطه دسترسی به پایگاه داده تولید کند، استفاده می شود. در فاز پویا، این تکنیک تمامی پرس و جوها را پیش از ارسال شدن به پایگاه داده نگه داشته و هر پرس و جو را در مورد مدل هایی که بصورت ایستا ساخته شده اند، بررسی می کند، پرس و جوهایی که مدل را نقض می کنند، به عنوان حملات تزریق sql شناسایی شده و از اجرای آنها در پایگاه داده جلوگیری می شود.
شش مرحلهی مقابله با SQL Injection :
استفاده رو به افزایش پایگاههای داده و برنامههایی که این پایگاهها را بهم متصل میکند، به معنای این است که SQL Injectionهنوز باید چزو نگرانیهای متخصصان حوزهی امنیتی IT باشد.
اخبار فراوانی پیرامون حملات سایبری و نفوذ امنیتی به شرکتهایی همچون Target ، Michaels ، Niemen Mrcus و هتلهای زنجیرهای همچون، هتل هیلتون و هتل ماریوت وجود دارد. مسئلهی مهمتری که بیش از کشف این حملات وجود دارد اینست که این شرکتهای بزرگ که قربانی این حملات بودهاند، هنوز دقیقاً نمیدانند که چگونه این حملات انجام شده است و درک درست وکاملی از عواقبی که به تبع این حملات به آنها تحمیلشدهاست ندارند.
موضوعی که در رابطه با این حملات محتمل به نظر میرسد اینست که حداقل در برخی از این حملات، از SQL Injection استفاده شده باشد. بیش از ۱۰ سال است که مهاجمین برای سرقت اطلاعاتی نظیر اطلاعات حسابها و تراکنشهای مالی از طریقSQL Injection به پایگاه داده بیشماری نفوذ کردهاند.
حملات SQL Injection پدیده تازه شناخته شدهای نمیباشد و متخصصان امنیتی تواناییهای زیادی برای مقابله با این حملات دارند. اما با توجه به اظهارات Neira Jones ، مدیر سابق امنیت پرداخت شرکت Barclaycard ، هنوز بالغ بر ۹۷% در دنیا از این شیوه بهره می گیرند. موضوعی که انسان را کنجکاو می کند اینست که با وجود شناخت این حملات، چگونه این حملات موثر هستند؟
موفقیت این حملات به معنای این نیست که فعالیتهای در این زمینه کم بوده است، بلکه متخصیص حوزههای امنیتی از ماهیت حملات و نحوهی انجام آنها آگاهند ولی حملات اخیر و حجم بروز آنها این متخصصان را نیز سرگردان کرده است. موضوعی که این باعث موفقیت این حملات در حال حاضر شده است، اینست که اغلب این حملات از آسیبپذیریهای روز صفرم استفاده میکنند و این به معنای این است که مولفههای این حملات تاکنون دیده نشدهاند و شواهدی از انجام نفوذ به پایگاه داده در آنها دیده نمیشود. همین امر مشکلات فراوانی را برای متخصصان حوزهی امنیت IT ، مخصوصاً متخصصینی که بر روی شناسایی این حملات از طریق تکنولوژی امنیتی مبتنی بر امضای دیجیتالی حساب باز کرده بودند، ایجاد کرده است.
مقابله با این حملات، باید با اتخاذ رویکردی متفاوت انجام شود، رویکردی که بر اساس آن دسترسیهای نرمال و همچنین شناسایی آنچه که باعث قرار گرفتن دسترسی در دستهی دسترسیهایی غیرمجاز خواهد شد، مشخص شود. این رویکرد باید به گونهای باشد که بر اساس آن بتوان حملاتی که بدون ایجاد شاخصههای مثبت کاذب در حال انجام است، را شناسایی کرد.
محصولاتی که از این نوع رویکرد استفاده میکنند در حال ظهور و افزایش هستند. از جملهی این محصولات میتوان به DB Networks ، SQL Injection Management Solution اشاره نمود. این دو محصول اخیراً در بسیاری از سایتها بررسی شده اند.
با توجه به مواردی که در این نوع از حملات وجود دارد، واضح است که باید شیوههای بهتری برای کاهش امکان بروز این حملات تعبیه شود. سه مورد از این روشها بر روی جنبههای مدیریت و طراحی سیستمهای پایگاهداده SQL متمرکزند، این روشها به صورت زیر است:
۱-چشم بسته به ورودیها اطمینان نکنید
به معنای سادهتر، اعتبار و صحت هرگونه دادهای که در موتور SQL قرار داده میشود باید بررسی شود که به معنای این خواهد بود که ارگانها و سازمانها باید چارچوبهای امنیتی را در موقع طراحی رعایت و اجرا کنند که نیازمند اینست کهSQL با استفاده از کووریهای پارامتری شده ساخته شود، تکنیکی که نیاز به کدنویسی سنگینی دارد و از طریق آن حملات SQL Injection از طریق جداسازی کدهای اجرایی و اطلاعات ورودی از یک دیگر، مانع بروز این حملات میشود.
۲-پیامهای خطایی که ایجاد میکنید با دقت بیشتری انتخاب کنید
معمولاً مهاجمان از پیامهای خطایی که در برنامه ایجاد شده است استفاده میکنند تا بفمند که بهتر است چگونه به پایگاه داده حمله کنند. برنامه نویسان و مدیران پایگاههای داده باید به خطاهایی که در هنگام ایجاد یک ورودی غیر معمول نمایش داده میشوند، توجه بیشتری داشته باشند. مثلاً خطای ‘نام کاربری نمیتواند شامل اعداد باشد’ را که توسط پایگاه داده برگردانده میشود در نظر بگیرید. همین اطلاعات کم می تواند به مهاجم این کمک را بکند که در قسمت نام کاربری اعداد را وارد نکند.
۳-بستههای مکمل نرم افزارها و پایگاههای داده را به طور کامل تهیه و اجرا کنید
لازم به ذکر این نکته نیست که بستههای مکمل نرم افزاری باید به طور منظم به برنامه اعمال شوند. اعمال بستههای مکمل نرم افزاری یکی از تکنیکهای امنیتی مغفول است. دلیل این امر میتواند، ضعف مدیریتی، عدم اطلاع رسانی و یا ضعف اطلاع رسانی عرضه کننده و فروشندهی محصول و یا ترکیبی از این دو و دیگر عوامل باشد. بسیاری تنها راه برای حل این مشکل را استفاده از سیستم مدیریت بستههای مکمل میدانند که در اغلب موارد، با ایجاد یک مشکل کوچک، این برنامهها به شکست کشیده می شوند.
۴-از ابزارهای رصد و مانیتورینگ شبکه استفاده کنید
رصد فعالیتهای مرتبط با دسترسی در سطح نرمافزارها، شاخصی است که میتواند شما به سرعت را از بروز حمله آگاه کند. راه حل ساده در این گونه موارد اینست که افزایش تعداد خطاها و یا افزایش در فعالیت، میتواند به عنوان ملاکی در نظر گرفته شود که به مدیر سیستم در مورد یک حملهی در حال انجام هشدار دهد.
۵-ابزارهای فیلترینگ را فراموش نکنید
نرم افزارهای امنیتی بلادرنگ در کنار سیستمهای مانیتورینگ از طریق فیلترکردن ترافیکهای مشکوک و نادیدهگرفتن دسترسی به پایگاه داده میتوانند برای دفع حملات در حین بروز آنها استفاده شوند.
۶-امنیت پایگاه داده خود را ارتقاء دهید
استفاده از سیستمهای تصدیق هویت اضافی که ازتکنولوژی امضای منفرد(SSO)، استفاده میکنند، در کنار استفاده از کنترلهای امنیتی از برنامهها و پایگاههای Backend میتواند موجب ارتقاء محافظت از پایگاههای دادهی آسیبپذیر شود. مطلب دیگری که وجود دارد اینست که استفاده از سیستمهای تصدیق هویت High end نیز در این مورد بسیار کارساز است. این سیستمها این قابلیت را دارند تا ورود به سیستم را به همراه بازرسی و اعطای امتیازات ویژه برای کاربران اصلی را درکنار یکدیگر هم ارائه کند. به عبارت دیگر دسترسی ویژه فقط برای مدیران سیستم و پایگاه داده امکان پذیر است و چناچه دیگران سعی کنند، تا از این قابلیتهای ویژه که برای مدیران در نظر گرفته شده استفاده کنند، این موضوع ثبت خواهد شد و به عنوان فعالیت مشکوک گزارش خواهد شد.
ترکیب بهترین شیوهها و استفاده از تکنولوژیهایی آتیای که پس از محصول فعلی به بازار ارائه میشوند، در کار یکدیگر ثابت کرده است که بهترین روش برای مقابله با حملات SQL Injection که هنوز جزو دغدغههای شرکتهای بزرگ و کوچک است، میباشد.
برای اطلاع از فن آوری های نوین ارتباطی شبکه های وایرلس و ماکرویو و مراکز تلفنی تحت شبکه از کانال تلگرامی ما به آدرسهای Wireless_tech@ و Voip_Tech@ دیدن فرمایید.