Тестер 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 Application Firewall) та моніторте логи для виявлення спроб SQL-ін'єкцій.