حسین کعبی: وقتی فیگو را در جام جهانی زدم....
این روش هک شایع ترین روش در هک کردن کارتهای اعتباری و اطلاعات سایتها و بانکهای اطلاعاتی به شمار می آید.
شایع ترین پایگاههای اطلاعات که با این مساله مواجه میشوند شامل پایگاه اطلاعات Access, Microsoft Sql , MySql , Oracel است . حال در ادامه به توضیح مختصری در مورد چگونکی وقوع این نوع حملات و راههای مقابله با آن میپردازیم.
نفوذگر در این حملات با سوء استفاده از فرمهایی که از طریق کاربر ورودی میگیرد، کدهای مخرب خود را به ورودی برنامه تزریق میکند و بعد از پردازش بین پایگاه اطلاعات و برنامه تحت وب عملیاتی به عنوان خروجی انجام میشود یا اطلاعاتی به روی صفحه نمایش داده میشود که نفوذگر بر اساس خروجی کار خود را پیش می برد.
فرمهای ورود به قسمت مدیریت وب سایت، نمایش اخبار, نمایش مقالات و امثال این گونه فرمها قربانیان این حملات میباشند در ادامه یک مورد از این حملات را شرح می دهیم و در نهایت به روشهای مقابله با این نوع حملات میپردازیم. برای مثال فرم ورود به قسمت مدیریت یک سایت در نظر بگیرید که شامل دو ورودی نام کاربری و کلمه عبور است و دکمه ارسال که اطلاعات را به سمت برنامه میفرستد، حال نام کاربری مهم نیست و هر چیزی می تواند باشد اگر در قسمت کلمه عبور عبارت -1=1 a' or وارد شود باعث میشود که دستوری که برنامه به پایگاه اطلاعات میفرستد دچار انحراف بشود و نتیجه اجرای عملیات درست نباشد و باعث ورود به قسمت مدیریت سایت بشود و شخص نفوذگر به کلیه اطلاعات به راحتی دسترسی داشته باشد البته این یکی از ساده ترین روشهای تزریق کد به بانک اطلاعاتی است که البته هنوز هم در بسیاری از فرمها این مشکل وجود دارد و ناشی از کنترل نشدن مقادیر ورودی توسط برنامهنویس و وجود مشکل در دستوراتی که به پایگاه داده ارسال میشود باشد که بسادگی باعث سوءاستفاده نفوذگران میشود. حال نوبت روشهای مقابله با حملات تزریق کد به پایگاه داده (Sql Injection) است قبل از شروع باید اهمیت این موضوع را درک کنیم که سایتهای بسیار معروف و مهمی توسط این روش مورد حمله قرار گرفتند و این امر برنامهنویس را بر آن می دارد که مقابله با حملات تزریق کد را یکی از قسمتهای مهم کار خود در نظر بگیرد و در تمام فرمهایی که ورودی از کاربر میگیرد این مساله را کنترل نماید.
روشهای مقابله با حملات تزریق به پایگاه اطلاعات
یکی از مهمترین روشها جلوگیری از نمایش ارورهای برنامه است که در صورت به وجود آمدن هرگونه مشکل برای برنامه یا تزریق ورودیهای مخرب به برنامه سورس برنامه یا اطلاعات پایگاه داده نمایش داده نشود چون بیشتر نفوذگران بر اساس ارورهایی که برنامه می دهد کار خود را مرحله به مرحله پیش میبرند و به اطلاعات بیشتری دستیابی پیدا میکنند. این مساله خیلی مهم است که امیدواریم تمام برنامهنویسان رعایت کنند که در آینده برایشان مشکلی پیش نیاد.
مساله بعدی کنترل ورودیهای برنامه است این مهمترین قسمت مقابله با حملات تزریق کد است. ورودیهای برنامه بطور کل اطلاعاتی است که به فرمهای برنامه پست میشود که ما توسط روشهای مختلفی می توانیم اطلاعات ورودی را کنترل کنیم. بهترین لایه, لایه امنیتی سرور است که کلیه مقادیر پست شده را کنترل کند و مقادیر مخرب را فیلتر کند و قبل از این که اطلاعات به برنامه پست شود جلوی حملات را بگیرد. البته این روش مقابله به مسائل امنیتی سرور بر می گردد که ممکن است در یک سرور رعایت شود و در یک سرور رعایت نشود که این امر برنامهنویس را مجبور میکند که این لایه امنیتی را در داخل برنامه پیاده سازی کند و کلیه اطلاعات ورودی و پست شده را چک کند و ورودیهای مخرب را فیلتر نماید.
بیشترین مشکلی که موجب تزریق کدهای مخرب به پایگاه اطلاعات میشود ورودیهای متنی هستند که از طریق url به برنامه ارسال میشود تا جای ممکن باید سعی شود برای نمایش اطلاعاتی مثل اخبار, مقالات و مطالبی که در پایگاه داده ذخیره شده از ورودیهای عددی استفاده شود تا جلوی تزریق کد گرفته شود و اگر ورودی عددی باشد در برنامه باید کنترل شود که ورودی مشکلی نداشته باشد و آلوده به کدهای مخرب نباشد این مهمترین مساله است که تمام مشکلات تزریق کدهای مخرب به پایگاه اطلاعات ناشی از چک نکردن ورودیهای آلوده است که خیلی راحت میتوان جلوی این نوع حملات را گرفت. امیدواریم که این مطالب رعایت شود و ما شاهد این گونه مشکلات برای صاحبان سایتها نباشیم. این مساله جای بحث بسیار زیادی دارد که در مطلب ما نمی گنجد برای بیشتر آشنا شدن با این گونه حملات می توانید به آدرس زیر مراجعه کنید www.ashiyane.org/forums : و از مقالات و ابزارهای نوشته شده در این زمینه استفاده کنید و چند نمونه دیگر از این نوع حملات را در لینک http://en.wikipedia.org/wiki/SQLinjection می توانید مشاهده کنید.
امید نوروزی
حسین کعبی: وقتی فیگو را در جام جهانی زدم....