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.