با حملات SQL injection آشنا شوید

حملات SQL injection

امنیت سایت دروپال یا هر سایتی را می ‌توان جزء مهم‌ ترین فاکتورهای کیفی دانست که باید به شیوه‌ های مختلف به آن توجه شود. هر گونه سهل انگاری در استفاده از پسووردها و شناسه ‌های ناامن می ‌تواند این امنیت را به شکل جبران ناپذیر به خطر انداخته و باعث ایجاد اثرات مخرب بر روی داده‌ های مختلف شود یا نفوذ در اطلاعات و حتی حذف آن ‌ها را امکان‌پذیر نماید. در ادامه این مقاله نکات و توضیحاتی را درباره حملات SQL injection و روش‌هایی برای ممانعت از ایجاد تاثیرات منفی آن‌ ها ارائه می‌ کنیم.

آشنایی با حملات SQL injection

تزریق در پایگاه اطلاعات یا دیتا بیس (تزریق اس کیو ال) راهی است که با استفاده از آن می ‌توان شناسه ‌ای مخرب و نامعتبر را به یک شکل وب در قالب قسمتی از پرس و جو SQL قرار داد و به این شیوه برنامه را برای پذیرفتن و اجرای کد جدید SQL به جای شناسه اصلی SQL هدایت نمود.

وقتی جاگذاری این کد با موفقیت انجام شود، در واقع پایگاه داده‌ ها آسیب‌پذیر می ‌شوند و آپدیت کردن، ایجاد تغییرات، مطالعه و حتی از بین بردن اطلاعات توسط عامل مزاحم نفوذ کننده امکان ‌پذیر می ‌شود.  بیشترین موارد آسیب و اقدامات مخربی که افراد سودجو در پی اعمال آن‌ ها هستند داده‌های کاربری، اطلاعات کارت بانکی و پسووردهای مختلف است و می ‌توان قریب به 20 درصد از اعمال نفوذها و فعالیت ‌های مخرب را به ایجاد حملات SQL injection نسبت داد و به همین جهت لازم است اقدامات ضروری و روش ‌های مناسب جهت جلوگیری از ایجاد این حملات و نفوذ این تاثیرات مخرب بر روی پایگاه داده‌ها توسط افرادی که محدوده کاری آن‌ها مرتبط با SQL است صورت بگیرد.

حملات SQL injection

 

روش ‌های محافظت از دیتا بیس در برابر حملات SQL injection

Mod Security را اجرا کنید

برای افزایش سطح امنیت اطلاعات و اطلاعات پایگاه داده ‌ها می ‌توانید از این قابلیت بهره بگیرید و سازوکارهای امنیتی مناسب را اعمال نمایید. Mod Security فایروالی مبتنی بر برنامه‌ است و می‌ تواند وب سایت و داده‌ های آن را در برابر حجم زیادی از حملات مقاوم کند.

به کاربران اعتماد نکنید

شما باید بخش ‌های مختلف سایت خود را برای ورود کاربران مختلف ایمن کنید. اگر کادری مخصوص به وارد کردن شناسه‌ های عددی مشخص مثل پسوورد یا شماره تلفن را در سایت قرار داده ‌اید، تنها پذیرش اعداد را برای فیلد تعریف کنید و محدوده ‌ای معین را در نظر بگیرید تا با وارد نمودن کدهای دیگر توسط افراد سودجو خطر ایجاد حملات مختلف به وجود نیاید. برای جلوگیری از ایجاد این خطرات روش‌ های زیر را مورد استفاده قرار دهید.
تعداد ردیف ‌های بازگشتی در زمان مورد تایید قرار دادن اعتبار پسوورد و نام کاربری را محدود کنید: برای ارزیابی و بررسی حضور کاربر در پایگاه داده ‌ها یک ردیف از جدول کافی است و لازم نیست تمام ردیف ‌ها را مورد استفاده قرار دهید.

حملات SQL injection

 

دسترسی به پایگاه داده‌ ها را محدود کنید: توجه کنید که دسترسی کاربران به داده‌ ها باید محدود باشد. اگر تنها دسترسی Select کارساز است، دسترسی Delete یا Drop را مجاز قرار ندهید. جداسازی دسترسی به پایگاه داده‌ ها در صورت استفاده از چند برنامه مختلف نیز باید در دستور کار قرار گیرد تا اگر کاربر به برنامه خاصی نیاز دارد تنها امکان استفاده از همان برنامه برایش مقدور شود نه برنامه‌ های دیگر.
در ورودی‌ های متنی از quotes فرار کنید: در Queryهای SQL نقل قول ‌ها دارای مفاهیم خاص هستند و به این جهت باید در کادرهای ورودی از تمام نقل‌ قول‌ ها فرار کرد. پیوست ‌های ساختگی برای ورودی ‌های متنی قبل از قرارگیری آن ‌ها در دیتا بیس توسط زبان‌ های برنامه ‌نویسی مهیا می ‌شود.

از کوئری‌ های پارامتریک و Statementsهای آماده شده استفاده کنید

زمانی که به جای ایجاد پرس و جو SQL به شکل پویا، از Statementsهای آماده استفاده می‌کنید در آغاز باید الگوریتمی از تمام query ایجاد کنید و پارامترهای شامل داده‌های ورودی کاربران را به صورت سمبلی مشخص نشان دهید. بعد از اجرایی شدن Statementsهای آماده شده، همه پارامترها جایگزین ورودی کاربر حقیقی شده و اعتبار اطلاعات مورد سنجش قرار می‌ گیرد و به این وسیله زمینه برای اجرای کوئری‌ های واقعی فراهم می‌ شود.

 

مقالات مرتبط

About text formats

متن ساده

  • تگ‌های HTML مجاز نیستند.
  • خطوط و پاراگراف‌ها بطور خودکار اعمال می‌شوند.
  • Web page addresses and email addresses turn into links automatically.