PDA

View Full Version : سوال از pdo



kafco00
سه شنبه 03 تیر 1393, 09:42 صبح
سلام بر همگی زحمت کشان این تالار

دوستان یه سوال
من خیلی گشتم که بتونم sql injection رو در pdo مهار کنم
سایت ها quote() رو پیشنهاد کرده بودند اما این رو وقتی استفاده می کنم در مقدار گرفته شده از input دوتا تک کوتیشین قرار میده
'string'
که همین جوری هم وارد دیتابیس میشه. و مشکل داره
بعد تو سایت خود php.net خوندم که خود execute هم این کار رو می کنه
شبیه کد زیر

$db = new db();
$database = $db->connection();
$sql = $database->prepare("INSERT INTO news (title,catid,img,text,date) VALUES (:title,:catid,:img,:text,:date)");

$res = $sql->execute(array(
':title' => $this->title,
':catid' => $this->catid,
':img' => $this->img,
':text' => $this->text,
':date' => $this->dates
));
return $res;
الان این $sql->execute که من اومدم این طوری نوشتم همین پاک سازی sql injection رو انجام میده ؟
اگر کد بهتری هم هست ممنون میشم بیشتر راهنمایی کنید

سپاس گذارم

rezaonline.net
سه شنبه 03 تیر 1393, 10:09 صبح
مشکلی نداره روش اصولی اش هم همینه استفاده کنید .

emadrezvani
سه شنبه 03 تیر 1393, 10:10 صبح
اگر معماری وار به موضوع نگاه کنیم شما باید قبل از ارسال به تابع اجرای دستورتون(پایگاه داده) عمل امن شدن اطلاعات انجام بشه. یا حداقل اگر برای ارتباط با پایگاه داده یک کلاس نوشته باشید حتما باید یک متد برای امن سازی ورودی و خروجی ها بنویسید.

kafco00
سه شنبه 03 تیر 1393, 12:09 عصر
سلام

rezaonline.net (http://barnamenevis.org/member.php?230839-rezaonline-net) جان ممنون
emadrezvani (http://barnamenevis.org/member.php?332657-emadrezvani) : منظور شما اینه که من تمامی موارد ایمن سازی را در یک تابع جدا بنویسم؟ که موقع خروج و ورود داده کنترل بشه؟
می تونید یک مورد مثال بزنید؟ تا آموزشی یا منبعی بدید؟
سپاس گذارم

emadrezvani
سه شنبه 03 تیر 1393, 14:53 عصر
سلام.
در یک کلاس ممکن هست چند متد برای ایمن سازی ورودی ها وجود داشته باشد.
بله. متد باید زمان ورود و بازگشت از تابع صدا زده بشه.
مثال خاصی نیست(نوشتن کاری نداره).
گوگل بزنید.
http://barnamenevis.org/showthread.php?375941-%D8%AA%D9%88%D8%A7%D8%A8%D8%B9-%DA%A9%D8%A7%D8%A8%D8%B1%D8%AF%DB%8C-%D9%88-%D8%A7%D9%85%D9%86%DB%8C%D8%AA%DB%8C-PHP

http://www.php-jquery.ir/1388/%DA%86%DA%AF%D9%88%D9%86%DA%AF%D9%8A-%D8%AC%D9%84%D9%88%DA%AF%D9%8A%D8%B1%D9%8A-%D8%A7%D8%B2-sql-injection

foreach
سه شنبه 03 تیر 1393, 15:03 عصر
دوست عزیز همونطور که خودتون هم گفتید pdo خودش اینکار رو انجام میده و نیازی به کار دیگه ای نیست
همچنین میتونید از bindValue (http://www.php.net//manual/en/pdostatement.bindvalue.php) و یا bindParam (http://www.php.net//manual/en/pdostatement.bindparam.php) برای تنظیمات بیشتر استفاده کنید