mirnasab82

حذف نمودن باگ از وب سایت

2 ارسال در این موضوع قرار دارد

با سلام خدمت تمامی دوستان گرامی این تایپک رو زدم واسه بعضی از دوستان که کارشون امنیت وب سایت ها هست امید وار مفید باشه.

دوستانی که استفاده کردن تشکر کنن.

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

سلام روزتون بخیر

خب بی مقدمه بریم سراغ اموزش:

آموزش بستن باگ SQL injection در PHP :


اول بپردازیم به این که این باک ها چجوری ایجاد میشن .

ببینید در بحث واکشی از پایگاه داده ما از طریق دستورات PHP یه Query جاری میکنیم تا اطلاعات مارو از دیتابیس بخونه برای مثال :

SELECT * FROM content WHERE title='ParnianData'

در این کوئری ما درخواست کردیم تا هرچی ستون هست رو جایی که تایتل ما ParnianData هست انتخاب کن .


خوب اگه ورودی های ما امن نباشه هکر میتونه یه سری دستورات دیگه به این کوئری ما تزریق کنه . برای مثال :

SELECT * FROM content WHERE title=$_GET['title']

ما خواستیم هرچیزی که در مقدار title هست جستجو بشه در حقیقت هرچیزی در آدرس بار در مقدار title هست داخل دیتابیس سرچ بشه به این صورت :

localhost/post.php?title=ParnianData

حالا برای خراب کردن این کوئری کافیه یدونه ' در آخر آدرس بار وارد کنیم .

localhost/post.php?title=ParnianData'

جالا کوئری جاری میشه :

SELECT * FROM content WHERE title=$_GET['title']'

و اروری نشون میده مبنی بر این که کوئری سالم نیست .

و از این طریق هکر میفهمه که ورودی های ما امن نیست و میشه دستورات رو تزریق کرد .

خوب حالا هکر میاد از طریق دستورات ORDER BY , Union Select تعداد ستون ها و ردیف های مارو از دیتابیس میخونه و شروع میکنه به بیرون کشیدن نام جدول هامون .

و سپس کوئری مورد نظر خودش رو تزریق میکنه تا به رمز و یوزر مدیریت سایت برسه و یا محتوایی رو روی وبسایت اضافه یا کم کنه .

برای جلوگیری از این نوع حملات چند تا راه داریم که یکیش امن کردن ورودی های ماست .

ما میتونیم از توابع موجود زیادی در PHP برای امن کردن ورودی ها استفاده کنیم .

به عنوان مثال : 

filter_var
str_replace
mysql_real_scape_string
.
.
.

ما توی این جلسه قصد داریم با مورد سوم کار کنیم .

برای شروع کار ما باید ورودی رو داخل یه متغیر بریزیم :

$title = $_GET['title']

حالا امن کنیم :

$title = mysql_real_scape_string($_GET['title'])

در این صورت ورودی ما بصورت استرینگ های قابل قبول برای Mysql تعریف میشه و اگه کاراکتر غیر مجاز یا کوئری دیگه ای بخوایم جاری کنیم تبدیل میشه به یه چیز نا مفهوم .

و حالا متغیر تایتل رو در کوئری مورد نظر جایگذین میکنیم :

$title = mysql_real_scape_string($_GET['title'])

SELECT * FROM content WHERE title='$title'

به این صورت ورودی ما امن شد .

 

خوشحال میشم در صورت بازدید از این تایپک تشکر کنید. 

به اشتراک گذاری این ارسال


لینک به ارسال
به اشتراک گذاری در سایت های دیگر

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید دیدگاهی ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری