SQLMap یکی از قدرتمندترین و محبوبترین ابزارهای خودکار برای شناسایی و بهرهبرداری از آسیبپذیریهای SQL Injection است. هکرها و متخصصان امنیت به طور گسترده از این ابزار برای اسکن وبسایتها و پیدا کردن نقاط ضعف در پایگاه داده استفاده میکنند. بنابراین، محافظت از وب اپلیکیشن در برابر چنین ابزارهایی اولین و یکی از مهمترین قدمها برای تأمین امنیت است.
در این آموزش، یک راه حل بسیار ساده، سبک و کارآمد را با استفاده از یک فایل PHP معرفی میکنیم. این اسکریپت به عنوان یک فایروال وب اپلیکیشن (WAF) کوچک عمل میکند و بدون نیاز به تنظیمات پیچیده، از وبسایت شما در برابر اسکنهای SQLMap محافظت میکند.
ایده اصلی و نحوه عملکرد
ایده اصلی این است که درخواستهای ورودی به سرور را بررسی کرده و الگوهای مشخصی که مربوط به ابزار SQLMap است را شناسایی کنیم. خوشبختانه، SQLMap هنگام ارسال درخواستها، یک ردپای مشخص از خود به جای میگذارد:
- **شناسایی User-Agent:** ابزار SQLMap هنگام ارسال درخواستها، یک
User-Agentخاص در هدر HTTP قرار میدهد که معمولاً شامل کلمه "sqlmap" است. - **بررسی و مسدودسازی:** اسکریپت PHP ما
User-Agentهر درخواستی که به سرور ارسال میشود را چک میکند. اگر کلمه "sqlmap" در آن پیدا شود، اسکریپت IP مهاجم را شناسایی کرده و آن را در یک فایل متنی به نامblacklist.txtذخیره میکند. - **دفاع دائمی:** از آن پس، تمام درخواستهای بعدی که از IPهای موجود در لیست سیاه ارسال شوند، به طور کامل مسدود شده و کاربر با یک پیام خطای 403 (Forbidden) مواجه میشود.
ویژگیهای کلیدی این روش
این اسکریپت ساده مزایای قابل توجهی دارد:
- **سبک و سریع:** این کد هیچ وابستگی خارجی ندارد و با حداقل بار پردازشی روی سرور اجرا میشود.
- **نصب و راهاندازی آسان:** کافیست این فایل PHP را در ابتدای تمام صفحات پروژه خود (مثلاً در یک فایل `header.php` یا `init.php`) با دستور
includeفراخوانی کنید. - **مسدودسازی خودکار و هوشمند:** به محض شناسایی اولین تلاش برای اسکن، IP مهاجم برای همیشه بلاک میشود و دیگر شانسی برای تست آسیبپذیریهای دیگر نخواهد داشت.
مشاهده کد کامل و مقاله اصلی
این روش یک لایه دفاعی اولیه اما بسیار مؤثر در برابر اسکنهای خودکار و حملات SQL Injection است. برای مشاهده کد کامل این اسکریپت و مطالعه توضیحات فنی دقیقتر، میتوانید به مقاله اصلی من در پلتفرم مدیوم مراجعه کنید.