نام پژوهشگر: مجتبی مصطفوی

طراحی و پیاده سازی ابزاری جهت تشخیص و جلوگیری از حملات تزریق کور sql
پایان نامه وزارت علوم، تحقیقات و فناوری - دانشگاه اصفهان - دانشکده فنی و مهندسی 1389
  مجتبی مصطفوی   احمد براآنی

طی سالهای اخیر « حملات تزریق sql » یکی از تهدیدهای جدی برای برنامه های کاربردی وب که به نوعی پایگاه-داده ای را به خدمت گیرند، به حساب می آیند. این نوع از حملات اینترنتی، sql ناخواسته را از طریق یک پارامتر ورودی، به پایگاه داده تزریق می کنند. نوع خاصی از این حملات، «حملات تزریق کور sql» نامیده می شوند؛ حملاتی از نوع تزریق sql که بدون هیچ پیامی از سمت پایگاه داده انجام می پذیرند، که روش معرفی شده در این پایان نامه ویژه این نوع از حملات است. اغلب ابزارهایی که در این باره ساخته شده است، مربوط به حملات تزریق عادی sql هستند. برای مثال نرم افزار scrawlr که توسط شرکت معروف اچ پی جهت بررسی و پویش صفحات اینترنتی در مقابل انواع آسیب های تزریق sql تولید شده است، از حملات تزریق کور sql پشتیبانی نمی کند. به هر حال راه های مختلفی برای جلوگیری از نفوذ حملات تزریق sql به پایگاه داده معرفی شده است که همگی در سمت سرویس دهنده قابل انجام است و با کدهای کاربرد وب و یا کدهای پرس وجوی پایگاه داده سر و کار دارند. در این پایان نامه یک روش جدید برای جلوگیری از حملات تزریق معرفی شده است که با درخواست هایی که کاربر به سمت سرویس دهنده ارسال می کند سر و کار دارد. به این صورت که با تشخیص این که کاربر در حال ارسال یک sql ناخواسته و تزریق آن به پایگاه داده است از ارسال آن به برنامه های کاربرد وب جلوگیری می شود. از آنجا که درخواست مشتری به سمت سرویس دهنده در نقطه خروجی از سمت مشتری و ورودی از سمت سرویس دهنده قابل دسترسی است، امکان پیاده سازی این روش در هر دو یک از این نقاط بررسی می گردد. ابتدا این روش در سمت مشتری و با استفاده از کدهای جاوااسکریپت پیاده سازی شده است؛ کدهایی که در قالب یک فایل با فرمت js نوشته شده اند و به هر صفحه ای که احتمال تزریق کور در مورد آن وجود دارد شناسانده می شوند. به این صورت که در آن صفحه html در نقاطی از نوار آدرس یا فرم ها که مستعد تزریق اند، به دنبال یکی از ساختارهای تزریق کور sql می گردد و در صورت یافتن، مقدار آن پارامتر را از بین می برد. این راه حل در پایان نامه، برای دو متد post و get به صورت جداگانه بررسی می شود و راه هایی نو برای مقابله با ترفندهای نفوذگر برای خنثی نمودن ابزار، در این دو متد بیان می گردد. سپس به بیان محدودیت ها و نقاط ضعف این نوع پیاده سازی پرداخته شده و پیاده سازی آن در سمت سرویس دهنده شرح داده خواهد شد. به این صورت که کدها در قالب یک فایل php نوشته شده و به صفحاتی که در آنها پارامترهای متد ارسال چک می شود اضافه می گردد و در صورت کشف حمله، از ادامه پردازش فایل جلوگیری نموده و مسیر درخواستی مشتری را تغییر می دهد. در نهایت این کدها بر روی سایتی که با کدهای phpnuke طراحی شده است، تست و نتایج مورد انتظار در مورد جلوگیری از حملات تزریق کور sql بر متغیرهای ارسالی این سایت، دریافت شده است.