Sobes.tech
Junior — Middle

Jak można zapobiec podatnościom związanym z wstrzykiwaniem kodu SQL przez parametry w JDBC?

sobes.tech AI

Odpowiedź od AI

Aby zapobiec lukom związanym z wstrzykiwaniem kodu SQL (SQL Injection) przez parametry w JDBC, stosuje się następujące metody:

  • PreparedStatement — użycie zapytań parametryzowanych, gdzie parametry są przekazywane oddzielnie i nie są bezpośrednio wstawiane do ciągu SQL. Zapobiega to interpretacji parametrów jako kodu.

  • Walidacja i ucieczka danych wejściowych — sprawdzanie i oczyszczanie danych przed użyciem w zapytaniach.

  • Użycie ORM — na przykład Hibernate, które automatycznie generuje bezpieczne zapytania.

Przykład użycia 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();

Taki sposób wyklucza możliwość wstrzyknięcia złośliwego kodu SQL przez parametry.