راکت
حل شده

باگ sql Injection

4 پاسخ

سلام دوستان وقتتون بخیر
ببخشید برای رفع باگ sql injection در php
فقط کوئری هاتو به صورت pdo prepare بنویسی کافیه
یا کار دیگه ای باید انجام داد
اگر کوئری ها prepare بشه اگر از طریق url کد مخرب فرستاده بشه دیگه مشکلی ایجاد نمیشه؟

@hesammousavi
@ali.bayat
@Alimotreb

Davood
Davood
@dfardabasi
ثبت پرسش جدید

پاسخ‌ها

4
Reza
Reza
@Rezanp7

تخصص: برنامه نویس وب

بهترین پاسخ

بله همین کار کافیه
وقتی شما دیتای کاربر رو با استفاده از $_POST
دریافت کنی دیگ اگ با استفاده از url و متد get چیزی تزریق کنه توی کوئری قرار نمیگیره و جایی نداره

اگرم میخواین میتونید یه شرط بزارید که فقط وقتی متد post درخواست شد و به صفحه ارسال شد دستوراتتون کار کنه میتونید کد زیر رو اجرا کنید

if ($_SERVER [' REQUEST_METHOD'] == 'POST')
{
     // do somthing
}
Reza
Reza
@Rezanp7

تخصص: برنامه نویس وب

سلام
وقتی دستوری رو prepare میکنیم بجای ورودی هایی که قراره مستقیم از کاربر بگیریم و وارد کوئری کنیم یه سری پارامتر با نام دلخواه قرار میدم به صورت زیر

$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
  VALUES (:firstname, :lastname, :email)");

بعد دستور زیر رو اجرا میکنیم تا مقدایر کاربر رو جای اون پارامتر هایی که مشخص کردیم قرار بدیم

  $stmt->bindParam(':firstname', "ali");
  $stmt->bindParam(':lastname', "alipour");
  $stmt->bindParam(':email', "alip@gmail.com");

تابع bindParam دوتا ورودی میگیره اولی اسمی که به پارامتر ها تو کوئری دادیم تا پیداشون کنیم و دومی هم داده ای که میخوای بجای اون پارامتر تو کوئری جایگزین بشه

بعد از انجام این کار کوئری ما کاملا اماده و امن هست حالا کافیه با اجرای دستور زیر اونو اجرا کنیم

  $stmt->execute();
Davood
Davood
@dfardabasi

تخصص: PHP - Laravel

@Rezanp7
سلام
ممنون از توضیحتون
Prepare رو میدونستم
میخوام بدونم برا جلوگیری از این حمله همین یه کار کافیه
یعنی اگه مثلا ورودی get آدرس سایت کسی فایل مخربی تزریق کنه
اگر کویری pdo باشه دیگه مشکلی پیش نمیاد؟

شاید پاسخ شما همین‌جا باشد

Davood
Davood
@dfardabasi

تخصص: PHP - Laravel

ممنون بابت راهنماییتون و وقتی که گذاشتید🌹
@Rezanp7

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام