PDA

View Full Version : سوال: همیشه باید بعد از خواندن اطلاعات از دیتابیس، اطلاعات را Un-quote کنیم؟



Jason.Bourne
چهارشنبه 26 فروردین 1388, 15:52 عصر
برای جلوگیری از حملات SQL Injection هنگام ساختن Query از تابع mysql_real_escape_string یا addslashes استفاده می کنیم.

حالا سوال من این هست که اطلاعاتی را که از دیتابیس خوانده ایم را باید برای استفاده Un-quote کنیم (به تابع stripslashes پاس دهیم)؟

yaqubian
چهارشنبه 26 فروردین 1388, 18:44 عصر
دوست عزیز
دنبال مطلبی بعنوان tip های برنامه نویسی بگردید. قبلا در این مورد بحث شده.
موفق باشید

Jason.Bourne
چهارشنبه 26 فروردین 1388, 18:52 عصر
مشکل من این هست که نمیدونم بعد از استفاده از از تابع mysql_real_escape_string یا addslashes ، اطلاعاتی که ذخیره می شوند با یک (\) اضافه ذخیره می شوند یا اضافه شدن (\) فقط هنگام ارسال query به MySQL هست؟!

امیـرحسین
چهارشنبه 26 فروردین 1388, 18:57 عصر
backslash به کدها اضافه میشه....

Jason.Bourne
چهارشنبه 26 فروردین 1388, 19:09 عصر
backslash به کدها اضافه میشه....

منظورتون این هست که عبارت


it'sبصورت


it\'sدر دیتابیس ذخیره میشه؟

امیـرحسین
چهارشنبه 26 فروردین 1388, 19:21 عصر
توابعی مثل escape که متون رو فیلتر می کنند، مهم نیست که از مقدار برگشتی چه استفاده ای بشه (مثلا توی دیتابیس ذخیره بشه یا هر استفاده دیگه ای)، متن تغییر می کنه.

اینم عین جمله PHP.net مربوط به تابع mysql_real_escape_string (http://ir.php.net/manual/en/function.mysql-real-escape-string.php):


mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.


------------------------
البته توی این قبیل توابع، این تابع نیاز به کانکشن MySQL داره. پارامتر دوم این تابع همون کانکشن هست که اگر خالی بمونه از آخرین کانکشن استفاده می کنه و اگر نبود، خطای E_WARNING مرحمت می کنه!

Jason.Bourne
چهارشنبه 26 فروردین 1388, 19:33 عصر
توابعی مثل escape که متون رو فیلتر می کنند، مهم نیست که از مقدار برگشتی چه استفاده ای بشه (مثلا توی دیتابیس ذخیره بشه یا هر استفاده دیگه ای)، متن تغییر می کنه.

اینم عین جمله PHP.net مربوط به تابع mysql_real_escape_string (http://ir.php.net/manual/en/function.mysql-real-escape-string.php):


ممنون که پاسخ دادین.
اما در انجمن های IranPHP دقیقا خلاف این چیزی که شما میفرمائید، به من پاسخ دادند. هر چند که خودم فکر میکنم که چیزی که شما فرمودید صحیح است.

لینک تاپیک مربوطه:

http://www.iranphp.net/forum/showthread.php?t=3002