Davood
3 سال پیش توسط Davood مطرح شد
4 پاسخ

باگ sql Injection

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

@hesammousavi
@ali.bayat
@Alimotreb


ثبت پرسش جدید
Reza
تخصص : برنامه نویس وب
@Rezanp7 3 سال پیش آپدیت شد
1

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

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

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

Reza
تخصص : برنامه نویس وب
@Rezanp7 3 سال پیش آپدیت شد
1

سلام
وقتی دستوری رو 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
تخصص : PHP - Laravel
@dfardabasi 3 سال پیش مطرح شد
0

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


Reza
تخصص : برنامه نویس وب
@Rezanp7 3 سال پیش آپدیت شد
1

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

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

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

Davood
تخصص : PHP - Laravel
@dfardabasi 3 سال پیش مطرح شد
0

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


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

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