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

مشکل امنیتی

M O H A M M A D

Registered User
تاریخ عضویت
20 جولای 2009
نوشته‌ها
138
لایک‌ها
7
محل سکونت
Teh
با سلام
من یه حفره امنیتی تو سایتم پیدا کردم که تو آدرس بار جلو example.php?id= مقدار زیر رو مینویسم میتونم به دیتابیس دسترسی پیدا کنم:
کد:
-524%20union%20select%201,2,3,4,5,group_concat%28user_email,user_pass,user_name%29,7,8,9%20from%20user
حتی واسه گرفتن مقدار GET از دستور mysqli_real_escape_string هم استفاده کردم اما جلوش رو نگرفته
کسی میدونه چجوری میشه این باگ رو برطرف کرد؟
با تشکر
 

homayo0on

Registered User
تاریخ عضویت
25 آگوست 2011
نوشته‌ها
555
لایک‌ها
620
به این نوع آسیب پذیری ها میگن SQLI یا هممون SQL Injection
با توجه به اینکه احتمالا id در اساس باید با گرفتن عدد کار کنه میتونید با تابع is_numeric چک کنید آیا ورودی از نوع عدد هست یا خیر و در غیر این صورت پیام مناسب رو به خروجی بفرستید.
یا میتونید با کمک تابع intval کلا ورودی هرچی بود رو به عدد صحیح تبدیل کنید.
یا میتونید با کمک تابع preg_replace و با regular expression اعداد رو از ورودی فقط فیلتر کنید که نسبت به قبلی ها توصیه نمیشه.

لینک ها:
http://php.net/manual/en/function.is-numeric.php
http://php.net/manual/en/function.intval.php
http://stackoverflow.com/questions/5474088/php-regular-expression-filter-number-only
 
بالا