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