SQL 注入測試器

了解 SQL 注入攻擊並學習如何使用參數化查詢防範的教學工具

所有處理皆在瀏覽器中完成,不會上傳任何資料。
Offline Ready

SQL 注入測試器

了解 SQL 注入攻擊並學習如何使用參數化查詢防範的教學工具

🔒所有處理皆在瀏覽器中完成,不會上傳任何資料。
查詢範本
SELECT (Login)
使用者輸入(模擬)
輸入模擬的使用者輸入,以查看它如何影響 SQL 查詢...
常見 SQL 注入攻擊範例
有漏洞的查詢(字串串接)
不安全 - 請勿在正式環境中使用
SELECT * FROM users WHERE username = 'user_input_here' AND password = 'pass123'
安全的參數化替代方案
Node.js (mysql2)
const [rows] = await connection.execute(
  'SELECT * FROM users WHERE username = ? AND password = ?',
  [username, password]
);
Python (psycopg2)
cursor.execute(
    "SELECT * FROM users WHERE username = %s AND password = %s",
    (username, password)
)
Java (PreparedStatement)
PreparedStatement ps = conn.prepareStatement(
    "SELECT * FROM users WHERE username = ? AND password = ?"
);
ps.setString(1, username);
ps.setString(2, password);
ResultSet rs = ps.executeQuery();
C# (SqlParameter)
using var cmd = new SqlCommand(
    "SELECT * FROM users WHERE username = @user AND password = @pass",
    connection
);
cmd.Parameters.AddWithValue("@user", username);
cmd.Parameters.AddWithValue("@pass", password);
PHP (PDO)
$stmt = $pdo->prepare(
    'SELECT * FROM users WHERE username = :user AND password = :pass'
);
$stmt->execute(['user' => $username, 'pass' => $password]);
SQL 注入預防最佳實踐
1
始終使用參數化查詢(預備語句)而非字串串接來建立 SQL。
2
使用 ORM(Sequelize、SQLAlchemy、Entity Framework)自動產生參數化查詢。
3
應用最小權限原則:資料庫帳號應僅具有所需的權限。
4
對無法參數化的動態識別碼(如欄位名稱和資料表名稱)使用白名單。
5
將輸入驗證作為縱深防禦措施,但切勿將其作為唯一保護。
6
啟用 WAF(Web 應用程式防火牆)規則,並監控日誌中的 SQL 注入嘗試模式。