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}'"

會員專屬免費教學

本章節為註冊會員專屬的免費開放內容!請先登入或註冊會員,即可立即解鎖閱讀。

立即登入 / 註冊