🔥 با کمک هوش مصنوعی در کمتر از 6 ماه فول‌استک شوید ...
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ پروه عبدالملکی
جلوگیری از اینجکشن در گرفتن کوئری هنگام فیلتر
حمید مجتهد حل شده توسط حمید مجتهد

سلام

موقعی که در 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();
بهترین پاسخ
حمید مجتهد ۲۴ اسفند ۱۳۹۹، ۱۶:۱۵