SQL Injection тестер

Едукативни алат за разумевање SQL injection напада и учење како их спречити параметризованим упитима

Сва обрада се дешава у вашем прегледачу. Никакви подаци се не отпремају.
Offline Ready

SQL Injection тестер

Едукативни алат за разумевање SQL injection напада и учење како их спречити параметризованим упитима

🔒Сва обрада се дешава у вашем прегледачу. Никакви подаци се не отпремају.
Шаблон упита
SELECT (Login)
Кориснички улаз (симулиран)
Унесите симулирани кориснички улаз да видите како утиче на SQL упит...
Уобичајени SQL Injection payload-и
Рањив упит (конкатенација стрингова)
НЕБЕЗБЕДНО - Не користите у продукцији
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 Injection-а
1
Увек користите параметризоване упите (prepared statements) уместо конкатенације стрингова за SQL.
2
Користите ORM (Sequelize, SQLAlchemy, Entity Framework) који аутоматски генерише параметризоване упите.
3
Примените принцип најмањих привилегија: налози базе података треба да имају само потребне дозволе.
4
Користите белу листу за динамичке идентификаторе попут назива колона и табела који се не могу параметризовати.
5
Имплементирајте валидацију улаза као одбрану у дубину, али се никада не ослањајте на њу као једину заштиту.
6
Омогућите WAF (Web Application Firewall) правила и пратите логове за обрасце покушаја SQL injection-а.