Sobes.tech
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.