۱ محسن محمدرضاپور
جلوگیری از اینجکشن در گرفتن کوئری هنگام فیلتر
امیر صالحی حل شده توسط امیر صالحی

سلام

موقعی که در url مقداری رو دریافت می‌کنیم و از اون برای فیلتر کردن مثلا محصولات در دستور SELECT استفاده میشه چطور باید از اینجکت دستور در وسط دستوراتمون جلوگیری کنیم؟

 

$keyword = $_POST['search']; 
$query   = "SELECT * FROM products where product_title LIKE '%$keyword%'";

اینجا اگه کلاینت یک دستوری رو تحت POST وارد کنه می‌تونه به برخی اطلاعات دیتابیس دسترسی داشته باشه
امنیت رو چطور باید تامین کنیم؟

 

سلام و احترام

اگه از همون pdo استفاده کنید برای query زدن مشکلی برای sql injection نخواهیم داشت، شما توی query بالا مقادیر رو به شکل مستقیم داخل query گذاشتید که میتونه مشکل ساز باشه

	$conn = new PDO('mysql:host=localhost;dbname=test_db',$user,$password);
		$query = "SELECT * FROM `test_table` WHERE `name` like :name";
		$stmt = $conn->prepare($query);
		$stmt->bindParam(':name',$name);
		$stmt->execute();
		$stmt->setFetchMode(PDO::FETCH_ASSOC);
		$data = $stmt->fetchALl();
بهترین پاسخ
امیر صالحی ۲۴ اسفند ۱۳۹۹، ۱۶:۱۵