Trình kiểm tra SQL Injection
Công cụ giáo dục để hiểu tấn công SQL injection và học cách phòng chống bằng truy vấn tham số hóa
Mọi xử lý diễn ra trong trình duyệt của bạn. Không có dữ liệu nào được tải lên.
Trình kiểm tra SQL Injection
Công cụ giáo dục để hiểu tấn công SQL injection và học cách phòng chống bằng truy vấn tham số hóa
🔒Mọi xử lý diễn ra trong trình duyệt của bạn. Không có dữ liệu nào được tải lên.
Mẫu truy vấn
SELECT (Login)
Đầu vào người dùng (Mô phỏng)
Các payload SQL Injection phổ biến
Truy vấn dễ tổn thương (Nối chuỗi)
KHÔNG AN TOÀN - Không sử dụng trong sản phẩm
SELECT * FROM users WHERE username = 'user_input_here' AND password = 'pass123'
Các phương án tham số hóa an toàn
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]);Thực hành tốt nhất phòng chống SQL Injection
1
Luôn sử dụng truy vấn tham số hóa (prepared statements) thay vì nối chuỗi cho SQL.2
Sử dụng ORM (Sequelize, SQLAlchemy, Entity Framework) tự động tạo truy vấn tham số hóa.3
Áp dụng nguyên tắc đặc quyền tối thiểu: tài khoản cơ sở dữ liệu chỉ nên có quyền cần thiết.4
Sử dụng danh sách cho phép cho các định danh động như tên cột và tên bảng không thể tham số hóa.5
Triển khai xác thực đầu vào như biện pháp phòng thủ nhiều lớp, nhưng không bao giờ dựa vào nó là biện pháp bảo vệ duy nhất.6
Bật quy tắc WAF (Tường lửa ứng dụng web) và giám sát nhật ký để phát hiện mẫu tấn công SQL injection.