SQL Injection 防護
攻擊範例
# ❌ 危險寫法 - SQL Injection
user_input = "' OR '1'='1"
query = f"SELECT * FROM users WHERE email = '{user_input}'"
# 變成: SELECT * FROM users WHERE email = '' OR '1'='1'
# 回傳所有使用者!!!
# ✅ 安全寫法 - 參數化查詢
import psycopg2
conn = psycopg2.connect("dbname=test")
cur = conn.cursor()
cur.execute("SELECT * FROM users WHERE email = %s", (user_input,))
ORM 防護(Supabase)
// ✅ Supabase 安全查詢
const { data } = await supabase
.from('users')
.select('*')
.eq('email', userInput) // 自動參數化
Vibe Prompt
「幫我檢查這段程式碼的 SQL Injection 風險,並改成安全的參數化查詢。」
# 請修復這段程式碼
username = request.GET['username']
query = f"SELECT * FROM users WHERE username = '{username}'"