Тестер 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-инъекций.