حملات تزریق - Injection Attacks
حملات تزریق به دستهای از حملات سایبری اشاره دارند که در آن مهاجمان دادههای مخرب یا نفوذی را به سیستم وارد میکنند. این دادهها به صورت غیرمجاز به برنامهها یا سیستمها ارسال میشوند.
4 نوع از حملات تزریقی و روش های جلوگیری از آنها توضیح داده شده که از لینک های زیر میتونید بخونید:
SQL Injection
Code Injection
Command Injection
XML External Entity (XXE) Injection
تمامی موارد در لینک های بالا به صورت جامع توضیح داده شده ولی یک مثال دیگه میزنم که اگر نخواستید اون هارو نخونید. هرچند که بهتره بخونید.
مثال:
فرض کنید یک وبسایت دارای صفحهای است که کاربران میتوانند با وارد کردن نام کاربری خود، اطلاعات حساب کاربری خود را مشاهده کنند. وبسایت ممکن است از دیتابیسی استفاده کند که دارای جدولی با نام "
users" است. حالا فرض کنید کد PHP این صفحه به صورت زیر باشد:$username = $_POST['username'];حملهکننده میتواند در فیلد ورودی نام کاربری خود را وارد کند و در عین حال یک دستور
$query = "SELECT * FROM users WHERE username='$username'";
SQL مخرب به طور همزمان وارد کند. به عنوان مثال:' OR '1'='1' --پس از اجرای کوئری، دستور
SQL به شکل زیر تبدیل میشود:SELECT * FROM users WHERE username='' OR '1'='1' --'این دستور
SQL به معنی "انتخاب همه ردیفها از جدول کاربران (users) در صورتی که '1' برابر با '1' باشد" است. همچنین، بخش -- کامنت کننده باقیماندهی دستور SQL است و هر چیزی پس از آن نادیده گرفته میشود.روش های جلوگیری:
1- استفاده از
Prepared Statements میتواند از تزریقها جلوگیری کند. در Prepared Statements، جدا از دستور اصلی، پارامترها به صورت جداگانه ارسال میشوند و در زمان اجرا دستور جایگزین مقادیر ورودی میشوند.2- برنامهنویسان باید ورودیها را با دقت فیلتر سازی و تقویت کنند. این کار شامل حذف و یا اسکیپ کردن کاراکترهای غیرمجاز است.
3- اطمینان حاصل کنید که کاربران و برنامهها فقط به سطح دسترسی لازم برای انجام کارهای خود دسترسی دارند.
4- اطلاعات خطا در وبسایتها نباید جزئیاتی از دیتابیس یا سیستم را فاش کند.
5- مطمئن شوید که نسخههای مورد استفاده از دیتابیس و کتابخانههای آن بهروز هستند.
@AmirhDeveloper
.