Тестер SQL-ін'єкцій
Навчальний інструмент для розуміння атак SQL-ін'єкцій та вивчення способів їх запобігання за допомогою параметризованих запитів
Вся обробка відбувається у вашому браузері. Жодні дані не завантажуються.
Тестер SQL-ін'єкцій
Навчальний інструмент для розуміння атак SQL-ін'єкцій та вивчення способів їх запобігання за допомогою параметризованих запитів
🔒Вся обробка відбувається у вашому браузері. Жодні дані не завантажуються.
Шаблон запиту
SELECT (Login)
Введення користувача (імітоване)
Типові 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 Application Firewall) та моніторте логи для виявлення спроб SQL-ін'єкцій.