Bad Sector
8th March 2011, 11:39 PM
هدف این مقاله آشنایی مختصر با حملات ترزیق کد به بانکهای اطلاعاتی (Sql Injection) و روشهای مقابله با این دسته از حملات در دنیای وب است.
امروزه یکی از متداول ترین روشهای نفوذ به وب سایتها و بانکهای اطلاعاتی حملات تزریق کد است در این گونه حملات شخص نفوذگر یا برنامههای نفوذگر کدهای مخرب را از طریق ورودیهایی که برنامههای تحت وب میگیرند، اجرا میکند که باعث اختلال در سیستم وب سایتها میشوند اهداف نفوذگران در این گونه حملات سرقت اطلاعات یا تغییر اطلاعات بانک اطلاعاتی(database) است که گاهی اوقات این دسترسی تا نفوذ به سرور و دسترسی به کل فایلها و اطلاعات سرور ختم میشود که از این جنبه بسیار خطرناک است.
این روش هک شایع ترین روش در هک کردن کارتهای اعتباری و اطلاعات سایتها و بانکهای اطلاعاتی به شمار می آید. شایع ترین پایگاههای اطلاعات که با این مساله مواجه میشوند شامل Access, Microsoft Sql , MySql , Oracel میباشد. حال در ادامه به توضیح مختصری در مورد چگونگی وقوع این نوع حملات و راههای مقابله با آن میپردازیم.
نفوذگر در این حملات با سوء استفاده از فرمهایی که از طریق کاربر ورودی میگیرد، کدهای مخرب خود را به ورودی برنامه تزریق میکند و بعد از پردازش بین پایگاه اطلاعات و برنامه تحت وب عملیاتی به عنوان خروجی انجام میشود یا اطلاعاتی روی صفحه نمایش داده میشود که نفوذگر بر اساس خروجی، کار خود را پیش میبرد. فرمهای ورود به قسمت مدیریت وب سایت، نمایش اخبار, نمایش مقالات و امثال این گونه فرمها قربانیان این حملات میباشند در ادامه یک مورد از این حملات را شرح می دهیم و در نهایت به روشهای مقابله با این نوع حملات میپردازیم.
برای مثال فرم ورود به قسمت مدیریت یک سایت در نظر بگیرید که شامل دو ورودی نام کاربری و کلمه عبور است و دکمه ارسال که اطلاعات را به سمت برنامه میفرستد، حال نام کاربری مهم نیست و هر چیزی میتواند باشد اگر در قسمت کلمه عبور عبارت a` or `t`=`t وارد شود باعث میشود که دستوری که برنامه به پایگاه اطلاعات میفرستد دچار انحراف بشود و نتیجه اجرای عملیات درست نباشد و باعث ورود به قسمت مدیریت سایت بشود و شخص نفوذگر به کلیه اطلاعات به راحتی دسترسی داشته باشد البته این یکی از ساده ترین روشهای تزریق کد به بانک اطلاعاتی است که البته هنوز هم در بسیاری از فرمها این مشکل وجود دارد و میتواند ناشی از کنترل نشدن مقادیر ورودی توسط برنامهنویس و وجود مشکل در دستوراتی که به پایگاه داده ارسال میگردد باشد.
حال نوبت روشهای مقابله با حملات تزریق کد به پایگاه داده (Sql Injection) است قبل از شروع باید اهمیت این موضوع را درک کنیم که سایتهای بسیار معروف و مهمی توسط این روش مورد حمله قرار گرفتند و این امر برنامهنویس را بر آن میدارد که مقابله با حملات تزریق کد را یکی از قسمتهای مهم کار خود در نظر بگیرد و در تمام فرمهایی که ورودی از کاربر میگیرد این مساله را کنترل نماید.
روشهای مقابله با حملات تزریق به پایگاه اطلاعات
یکی از مهمترین روشها جلوگیری از نمایش خطاهای برنامه است که در صورت به وجود آمدن هرگونه مشکل برای برنامه یا تزریق ورودیهای مخرب به برنامه سورس برنامه یا اطلاعات پایگاه داده نمایش داده نشود چون بیشتر نفوذگران بر اساس خطاهایی که برنامه می دهد کار خود را مرحله به مرحله پیش میبرند و به اطلاعات بیشتری دستیابی پیدا میکنند. این مساله خیلی مهم است که امیدواریم تمام برنامهنویسان رعایت کنند که در آینده برایشان مشکلی پیش نیاد.
مساله بعدی کنترل ورودیهای برنامه است این مهمترین قسمت مقابله با حملات تزریق کد است. ورودیهای برنامه بطور کل اطلاعاتی است که به فرمهای برنامه پست میشود که ما توسط روشهای مختلفی می توانیم اطلاعات ورودی را کنترل کنیم. بهترین لایه, لایه امنیتی سرور است که کلیه مقادیر پست شده را کنترل کند و مقادیر مخرب را فیلتر کند و قبل از این که اطلاعات به برنامه پست شود جلوی حملات را بگیرد. البته این روش مقابله به مسائل امنیتی سرور بر میگردد که ممکن است در یک سرور رعایت شود و در یک سرور رعایت نشود که این امر برنامهنویس را مجبور میکند که این لایه امنیتی را در داخل برنامه پیاده سازی کند و کلیه اطلاعات ورودی و پست شده را چک کند و ورودیهای مخرب را فیلتر نماید.
بیشترین مشکلی که موجب تزریق کدهای مخرب به پایگاه اطلاعات میشود ورودیهای متنی هستند که از طریق url به برنامه ارسال میشود تا جای ممکن باید سعی شود برای نمایش اطلاعاتی مثل اخبار, مقالات و مطالبی که در پایگاه داده ذخیره شده از ورودیهای عددی استفاده شود تا جلوی تزریق کد گرفته شود و اگر ورودی عددی باشد در برنامه باید کنترل شود که ورودی مشکلی نداشته باشد و آلوده به کدهای مخرب نباشد این مهمترین مساله است که تمام مشکلات تزریق کدهای مخرب به پایگاه اطلاعات ناشی از چک نکردن ورودیهای آلوده است که خیلی راحت میتوان جلوی این نوع حملات را گرفت.
منبع (http://daneshnameh.roshd.ir)
امروزه یکی از متداول ترین روشهای نفوذ به وب سایتها و بانکهای اطلاعاتی حملات تزریق کد است در این گونه حملات شخص نفوذگر یا برنامههای نفوذگر کدهای مخرب را از طریق ورودیهایی که برنامههای تحت وب میگیرند، اجرا میکند که باعث اختلال در سیستم وب سایتها میشوند اهداف نفوذگران در این گونه حملات سرقت اطلاعات یا تغییر اطلاعات بانک اطلاعاتی(database) است که گاهی اوقات این دسترسی تا نفوذ به سرور و دسترسی به کل فایلها و اطلاعات سرور ختم میشود که از این جنبه بسیار خطرناک است.
این روش هک شایع ترین روش در هک کردن کارتهای اعتباری و اطلاعات سایتها و بانکهای اطلاعاتی به شمار می آید. شایع ترین پایگاههای اطلاعات که با این مساله مواجه میشوند شامل Access, Microsoft Sql , MySql , Oracel میباشد. حال در ادامه به توضیح مختصری در مورد چگونگی وقوع این نوع حملات و راههای مقابله با آن میپردازیم.
نفوذگر در این حملات با سوء استفاده از فرمهایی که از طریق کاربر ورودی میگیرد، کدهای مخرب خود را به ورودی برنامه تزریق میکند و بعد از پردازش بین پایگاه اطلاعات و برنامه تحت وب عملیاتی به عنوان خروجی انجام میشود یا اطلاعاتی روی صفحه نمایش داده میشود که نفوذگر بر اساس خروجی، کار خود را پیش میبرد. فرمهای ورود به قسمت مدیریت وب سایت، نمایش اخبار, نمایش مقالات و امثال این گونه فرمها قربانیان این حملات میباشند در ادامه یک مورد از این حملات را شرح می دهیم و در نهایت به روشهای مقابله با این نوع حملات میپردازیم.
برای مثال فرم ورود به قسمت مدیریت یک سایت در نظر بگیرید که شامل دو ورودی نام کاربری و کلمه عبور است و دکمه ارسال که اطلاعات را به سمت برنامه میفرستد، حال نام کاربری مهم نیست و هر چیزی میتواند باشد اگر در قسمت کلمه عبور عبارت a` or `t`=`t وارد شود باعث میشود که دستوری که برنامه به پایگاه اطلاعات میفرستد دچار انحراف بشود و نتیجه اجرای عملیات درست نباشد و باعث ورود به قسمت مدیریت سایت بشود و شخص نفوذگر به کلیه اطلاعات به راحتی دسترسی داشته باشد البته این یکی از ساده ترین روشهای تزریق کد به بانک اطلاعاتی است که البته هنوز هم در بسیاری از فرمها این مشکل وجود دارد و میتواند ناشی از کنترل نشدن مقادیر ورودی توسط برنامهنویس و وجود مشکل در دستوراتی که به پایگاه داده ارسال میگردد باشد.
حال نوبت روشهای مقابله با حملات تزریق کد به پایگاه داده (Sql Injection) است قبل از شروع باید اهمیت این موضوع را درک کنیم که سایتهای بسیار معروف و مهمی توسط این روش مورد حمله قرار گرفتند و این امر برنامهنویس را بر آن میدارد که مقابله با حملات تزریق کد را یکی از قسمتهای مهم کار خود در نظر بگیرد و در تمام فرمهایی که ورودی از کاربر میگیرد این مساله را کنترل نماید.
روشهای مقابله با حملات تزریق به پایگاه اطلاعات
یکی از مهمترین روشها جلوگیری از نمایش خطاهای برنامه است که در صورت به وجود آمدن هرگونه مشکل برای برنامه یا تزریق ورودیهای مخرب به برنامه سورس برنامه یا اطلاعات پایگاه داده نمایش داده نشود چون بیشتر نفوذگران بر اساس خطاهایی که برنامه می دهد کار خود را مرحله به مرحله پیش میبرند و به اطلاعات بیشتری دستیابی پیدا میکنند. این مساله خیلی مهم است که امیدواریم تمام برنامهنویسان رعایت کنند که در آینده برایشان مشکلی پیش نیاد.
مساله بعدی کنترل ورودیهای برنامه است این مهمترین قسمت مقابله با حملات تزریق کد است. ورودیهای برنامه بطور کل اطلاعاتی است که به فرمهای برنامه پست میشود که ما توسط روشهای مختلفی می توانیم اطلاعات ورودی را کنترل کنیم. بهترین لایه, لایه امنیتی سرور است که کلیه مقادیر پست شده را کنترل کند و مقادیر مخرب را فیلتر کند و قبل از این که اطلاعات به برنامه پست شود جلوی حملات را بگیرد. البته این روش مقابله به مسائل امنیتی سرور بر میگردد که ممکن است در یک سرور رعایت شود و در یک سرور رعایت نشود که این امر برنامهنویس را مجبور میکند که این لایه امنیتی را در داخل برنامه پیاده سازی کند و کلیه اطلاعات ورودی و پست شده را چک کند و ورودیهای مخرب را فیلتر نماید.
بیشترین مشکلی که موجب تزریق کدهای مخرب به پایگاه اطلاعات میشود ورودیهای متنی هستند که از طریق url به برنامه ارسال میشود تا جای ممکن باید سعی شود برای نمایش اطلاعاتی مثل اخبار, مقالات و مطالبی که در پایگاه داده ذخیره شده از ورودیهای عددی استفاده شود تا جلوی تزریق کد گرفته شود و اگر ورودی عددی باشد در برنامه باید کنترل شود که ورودی مشکلی نداشته باشد و آلوده به کدهای مخرب نباشد این مهمترین مساله است که تمام مشکلات تزریق کدهای مخرب به پایگاه اطلاعات ناشی از چک نکردن ورودیهای آلوده است که خیلی راحت میتوان جلوی این نوع حملات را گرفت.
منبع (http://daneshnameh.roshd.ir)