Junior — Middle
Ako možno predísť zraniteľnostiam súvisiacim s vkladom SQL kódu cez parametre v JDBC?
sobes.tech AI
Odpoveď od AI
Na prevenciu zraniteľností súvisiacich s injekciou SQL (SQL Injection) cez parametre v JDBC sa používajú nasledujúce metódy:
-
PreparedStatement — použitie parametrizovaných dopytov, kde sa parametre odovzdávajú oddelene a nie sú priamo vkladané do reťazca SQL. Tým sa zabraňuje interpretácii parametrov ako kódu.
-
Validácia a escapovanie vstupných údajov — kontrola a čistenie údajov pred ich použitím v dopytoch.
-
Použitie ORM — napríklad Hibernate, ktoré automaticky generuje bezpečné dopyty.
Príklad použitia 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 prístup vylučuje možnosť vloženia škodlivého SQL kódu cez parametre.