سری 1 آموزش های امنیتی چت روم

بهترین مکان برای نمایش تبلیغات شما بهترین مکان برای نمایش تبلیغات شما بهترین مکان برای نمایش تبلیغات شما

سری 1 آموزش های امنیتی چت روم

بازدید: 465

http://s5.picofile.com/file/8163780926/l01dqhbaz2x00hwqk4q6.png

 

باگ sql زمانی رخ می دهد که برنامه نویس داده های ورودی را بدون کنترل مورد پردازش قرار دهد. نفوذگران از همین موضوع استفاده کرده و کنترل کامل سرور و یا تمامی سرور های موجود در آن شبکه را تحت کنترل خود در می آورند. پس هرکدی که از ورودی های کاربر برای جستجو در بانک اطلاعاتی بدون بررسی استفاده شود احتمال یک حمله موسوم به SQLI را دارد.
حال خواه این ورودی از طریق URL باشد( متد GET). خواه از طریق ارسال پست(متد POST).

در زیر شما کد مستعد SQLI را مشاهده می نمایید:

 

<?php $q="select * from TABLE where id=".$_GET['id']; $q1=mysql_query($q); ?>

 

همانطور که مشاهده می کنید این کد همان ورودی که از URL را دریافت میکند به طور مستقیم مورد پردازش قرار می دهد و این یعنی نفوذگر می تواندبه طور مستقیم دستورات خود را وارد نماید تا توسط سرور مورد پردازش قرار گیرد. این یعنی فاجعه! زیرا باگ SQLI یکی از خطرناک ترین باگهاست.

اگر نفوذگر کد زیر را به انتهای URL خود وارد کند چه اتفاقی می افتد؟؟؟

 

union select user from admin

بوسیله دستور union دو دستور select را به هم اضاف می کند و باعث می شود یوزرهایی که در جدول ادمین قرار دارند را مشاهده کند!

 

روش های جلوگیری از حمله:

1- روش های رایج و معمول: در خیلی از مواقع تاکتیکی که خیلی از دوستان برنامه نویس برای جلوگیری از حمله انجام می دهند، تاکتیک چک کردن ورودی و تبدیل آن به کاراکتر های دیگه!

مثلا تبدیل کدهای ورودی به نوع int و گرفتن ورودی به صورت عددی... و یا اضافه کردن یک کاراکتر / به ورودی و...

کد زیر را در نظر داشته باشید:

 

 <?php $q="select * from TABLE where id=".$_GET['id']; $q1=mysql_query($q); ?> 

 

روشهای معمول ایمن سازی به صورت زیر است:

1-استفاده از تابع int:
کد اصلاح شده با این متد:

 

 <?php $id=(int)$_GET['id']; $q="select * from TABLE where id='".$id."'"; $q1=mysql_query($q); ?> 

 

2- اعتبار سنجی ورودی به وسیله تابع ctype_digit() که تقریبا کار بالا رو انجام میده:
کد اصلاح شده با این متد:

 

 <?php $id=$_GET['id']; if(isset($id) AND ctype_digit($id)){ $q="select * from TABLE where id='".$id."'"; $q1=mysql_query($q); } ?> 

 

 

3- استفاده از escape
کد اصلاح شده با این متد:

 

 <?php $id=$_GET['id']; $q="select * from TABLE where id='".mysql_real_escape_string($id)."'"; $q1=mysql_query($q); ?> 

 

این کد تمامی ورودی های مضر را خنثی می کنه!
متد escape روش های دیگه هم داره که خیلی ایمن نیستند اما من بخاطر اینکه تاپیک جامع هست آنها را می آورم:
استفاده از تابع addslash , str_replace:

 

 <?php $id=$_GET['id']; $q="select * from TABLE where id='".addslashes($id)."'"; $q1=mysql_query($q); ?> 

 

این روش یک / به کد ورودی اضفه می کنه...

و برای str_replace:

 

 <?php $id=$_GET['id']; $q="select * from TABLE where id='".str_replace("'","''",$id)."'"; $q1=mysql_query($q); ?> 

 

همانطور که می دانید این یک تابع تبدیل هست و آرگومنت اول را به آرگومنت دوم تبدیل می کنه...


 


این مطلب در تاریخ: پنجشنبه 25 دی 1393 ساعت: 16:43 منتشر شده است
برچسب ها : ,,,,
نظرات(0)

نظرات


کد امنیتی رفرش

ورود کاربران


» رمز عبور را فراموش کردم ؟

عضويت سريع

نام کاربری :
رمز عبور :
تکرار رمز :
موبایل :
ایمیل :
نام اصلی :
کد امنیتی :
 
کد امنیتی
 
بارگزاری مجدد

پشتيباني آنلاين

پشتيباني آنلاين

آمار

آمار مطالب آمار مطالب
کل مطالب کل مطالب : 1005
کل نظرات کل نظرات : 259
آمار کاربران آمار کاربران
افراد آنلاین افراد آنلاین : 29
تعداد اعضا تعداد اعضا : 1309

آمار بازدیدآمار بازدید
بازدید امروز بازدید امروز : 1,771
بازدید دیروز بازدید دیروز : 4,672
ورودی امروز گوگل ورودی امروز گوگل : 1
ورودی گوگل دیروز ورودی گوگل دیروز : 1
آي پي امروز آي پي امروز : 352
آي پي ديروز آي پي ديروز : 341
بازدید هفته بازدید هفته : 8,005
بازدید ماه بازدید ماه : 8,005
بازدید سال بازدید سال : 177,274
بازدید کلی بازدید کلی : 1,455,104

اطلاعات شما اطلاعات شما
آی پی آی پی : 3.145.10.45
مرورگر مرورگر : Safari 5.1
سیستم عامل سیستم عامل :
تاریخ امروز امروز : چهارشنبه 13 تیر 1403

نظرسنجي

کدام طراح برتر هست از نظر طراحی بکاپ