یکی از سادهترین و مؤثرترین کارها برای امنکردن برنامه تحت شبکه (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

