| کانال امنیت و شبکه |: post #135 — TG.ME

🔐 جلوگیری از SQL Injection با Prepared Statement

یکی از ساده‌ترین و مؤثرترین کارها برای امن‌کردن برنامه‌ تحت شبکه (API, Web App) استفاده از Prepared Statement / Parameterized Query است. این کار جلوی خیلی از SQL Injectionها را می‌گیرد حتی اگر validation سمت کلاینت دور زده شود. ⚠️

ایده‌اش این است که query و دادهٔ ورودی کاربر از هم جدا شوند؛ دیتابیس ورودی را فقط به‌عنوان داده می‌بیند، نه بخشی از دستور SQL.

نمونهٔ ساده در Python با کتابخانهٔ psycopg2 برای PostgreSQL:

import psycopg2

conn = psycopg2.connect(...)
cur = conn.cursor()

# اشتباه (ساخت query با string)
username = input("username: ")
q_bad = f"SELECT * FROM users WHERE username = '{username}'"
cur.execute(q_bad) # آسیب‌پذیر به SQL Injection

# درست (استفاده از placeholder)
q_ok = "SELECT * FROM users WHERE username = %s"
cur.execute(q_ok, (username,)) # پارامتر جدا ارسال می‌شود
rows = cur.fetchall()


نکته‌ها:
• همیشه از placeholder مخصوص همان driver استفاده شود (مثل %s در psycopg2 یا ? در بعضی driverها).
• حتی روی internal panelها و سرویس‌های داخلی هم این عادت را رعایت کنید؛ اغلب حمله‌ها از داخل شبکه شروع می‌شود. 🚪

مرجع معتبر 👇
OWASP - SQL Injection Prevention


🔖 #Security #امنیت #SQL_Injection #Prepared_Statement #OWASP #Database_Security #Application_Security #Network_Security

👤 Developix

💎 Channel: @DevelopixNetwork
❤1👍1
June 7, 2026 1.2K 1 7