PDA

View Full Version : سوال: magic quotes و sql injection



eminem.encore
شنبه 16 دی 1391, 20:24 عصر
magic quotes چیه؟ چه رابطه ای با sql injection داره؟ magic quotes چطور فعال میشه و چطور غیر فعال ؟ و دستتون درد نکنه کد پایین هم رو توضیح بدین؟


// Strip the slashes if Magic Quotes is on:
if (get_magic_quotes_gpc()) $data = stripslashes($data);

siavashsay
شنبه 16 دی 1391, 21:26 عصر
magic_quotes_gpc تابعی هست که ورودی ها رو چک میکنه یعنی همون gpc آخرش میشه : Get - Post - Cookie
این تابع چک میکنه که ورودی ها کاراکترهایی مثل \ دارن یا خیر !
اگر داشتن اونها رو فیلتر میکنه تا هکر نتونه توسط کاراکترهایی مثل \ دست به Sql injection بزنه !
این تابع معمولا بروی اکثر هاست ها به صورت خودکار نصب و فعال هست اما اگر بازم میخواین که خودتون چک کنید کافیه از این کد استفاده کنید :


if (get_magic_quotes_gpc()) {
echo " is ON ";
}else{
echo " is OFF ";
}

بهتره بگذارید که این تابع فعال باشه تا از SQL INJECTION جلوگیری بشه ! نیازی ندارید که اون رو غیر فعال کنید !
تابع شما هم میگه که اگر این تابع فعال بود بعد از فیلتر کردن \ های اضافی رو حذف کنه تا ورودی شما صاف و پاک شه تا هکر نتونه injection کنه !
چون این تابع به ورودی شما \ اضافه میکنه البته در صورتی که ورودی شما \ داشته باشه !
مثلا اگر شما

hi \ every " body '
وارد کنید این تابع ورودی شما رو به اینصورت میکنه

hi \\ every\" body \'
حالا برای اینکه ورودی شما صاف بشه باید از stripslashes استفاده کنید ( معنی این تابع میشه حذف اسلش ها )