TGViewer
| کانال توسعه‌دهندگان PHP | | کانال توسعه‌دهندگان PHP | @developixphp · 1.68K subscribers
Post #91 619
یکی از ساده‌ترین و مهم‌ترین کارها برای امن‌کردن اپ‌های PHP اینه که مستقیم متغیرها رو نچسبونیم به Query و به‌جاش از Prepared Statement با PDO استفاده کنیم. با این کار جلوی خیلی از SQL Injectionها گرفته می‌شه 🚫💉

فرض کنیم یه فرم لاگین ساده داریم. این روش 👇 ناامن و مستعد SQL Injection هست:

$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');

$username = $_POST['username'];
$password = $_POST['password'];

// ❌ ناامن
$sql = "SELECT * FROM users WHERE username = '$username' AND password = '$password'";
$stmt = $pdo->query($sql);
$user = $stmt->fetch();


راه درست، استفاده از placeholder و bind کردن مقادیر هست. این‌طوری PDO خودش مقادیر رو escape می‌کنه و به‌عنوان دیتا با دیتابیس حرف می‌زنه، نه کد 👇

$pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass', [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);

$username = $_POST['username'];
$password = $_POST['password'];

// ✅ امن با prepared statement
$sql = "SELECT * FROM users WHERE username = :username AND password = :password";
$stmt = $pdo->prepare($sql);
$stmt->execute([
':username' => $username,
':password' => $password,
]);

$user = $stmt->fetch(PDO::FETCH_ASSOC);


نکات مهم 🤝

• همیشه ERRMODE_EXCEPTION رو فعال کن تا خطاها رو از دست ندی.
• از named placeholder (مثل :username) استفاده کن تا کدت خواناتر بشه.
• حتی برای مقدارهای عددی هم از prepared statement استفاده کن؛ به شرط «عددی بودن» دیتا برای Logic خودت اعتماد نکن.

این الگو رو توی همه Queryهایی که ورودی کاربر توشون استفاده می‌شه پیاده کن؛ لاگین، سرچ، فیلتر، پنل ادمین و… ✅

مستندات رسمی PDO و prepared statement:
https://www.php.net/manual/en/book.pdo.php

امروز توی یکی از بخش‌های پروژه‌ات این الگو رو جایگزین روش قدیمی کن و تفاوت تمیزی و امنیت کد رو ببین 😎

🔖 #PHP #پی_اچ_پی #PHP #PDO #Security #SQL_Injection #Best_Practices

👤 Developix

💎 Channel: @DevelopixPHP
  • 🔥 3
More from @developixphp
  1. Sep 26, 2026این کد موقع اجرا چه خروجی‌ای می‌ده و مشکلش کجاست؟ 🔖 #PHP #پی_اچ_پی 👤 Developix 💎 Channe…
  2. Sep 25, 2026🔥 پکیج: قراردادهای ترجمه سیمفونی اگر کد PHP را برای چندزبانگی می‌نویسید، بهتر است منطق بر…
  3. Sep 16, 2026🚀 ‏LaraGram Brain منتشر شد! از این به بعد برای ساخت ربات‌های تلگرام با فریم‌ورک LaraG…
  4. Sep 11, 2026ارسال ایمیل تأیید ثبت‌نام، بازیابی رمز عبور یا نوتیفیکیشن سفارش، تقریباً توی هر پروژه‌ PHP…
  5. Sep 10, 2026برنامه نویسی سوکت در PHP بخش اول عبارت دیگر در ارتباط های غیر سوکت برای ارسال یک پالس از س…
  6. Aug 31, 2026🔥 پکیج: استاندارد PSR-11 برای Container استاندارد PSR-11 فقط یه interface مشترک برای Cont…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →