Junior — Middle
Jak lze předejít zranitelnostem souvisejícím s vkládáním SQL kódu přes parametry v JDBC?
sobes.tech AI
Odpověď od AI
Pro prevenci vzájemného zranitelnosti související s injekcí SQL (SQL Injection) přes parametry v JDBC se používají následující metody:
-
PreparedStatement — použití parametrizovaných dotazů, kde jsou parametry předávány odděleně a nejsou přímo vkládány do řetězce SQL. To zabraňuje interpretaci parametrů jako kódu.
-
Validace a escapování vstupních dat — kontrola a čištění dat před jejich použitím v dotazech.
-
Použití ORM — například Hibernate, které automaticky generuje bezpečné dotazy.
Příklad použití PreparedStatement:
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
ResultSet rs = pstmt.executeQuery();
Tento přístup vylučuje možnost vložení škodlivého SQL kódu přes parametry.