Junior — Middle
Jaké typy dotazů považujete za nejbezpečnější a proč?
sobes.tech AI
Odpověď od AI
Nejbezpečnější jsou parametrizované (prepared) dotazy a ORM dotazy, které automaticky escapují vstupní data.
Důvodem je, že zabraňují SQL injekcím — když útočník vloží škodlivý SQL kód přes uživatelský vstup.
Příklad:
-
U parametrizovaného dotazu jsou parametry předávány odděleně od SQL kódu, což vylučuje možnost změny struktury dotazu.
-
Na rozdíl od spojování řetězců, kde je uživatelský vstup přímo vložen do dotazu.
Například v Java s JDBC:
String sql = "SELECT * FROM users WHERE username = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, userInput);
ResultSet rs = ps.executeQuery();
Tento přístup je bezpečnější než:
String sql = "SELECT * FROM users WHERE username = '" + userInput + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
Proto je vhodné používat parametrizované dotazy pro bezpečnost při testování a vývoji.