Junior — Middle
Πώς μπορούν να προληφθούν οι ευπάθειες που σχετίζονται με την εισαγωγή κώδικα SQL μέσω παραμέτρων στο JDBC;
sobes.tech AI
Απάντηση από AI
Για την αποτροπή ευπάθειας που σχετίζεται με την εισαγωγή SQL (SQL Injection) μέσω παραμέτρων στο JDBC, χρησιμοποιούνται οι ακόλουθες μέθοδοι:
-
PreparedStatement — χρήση παραμετροποιημένων ερωτημάτων, όπου οι παράμετροι περνούν ξεχωριστά και δεν εισάγονται απευθείας στη συμβολοσειρά SQL. Αυτό αποτρέπει την ερμηνεία των παραμέτρων ως κώδικα.
-
Επικύρωση και διαφυγή εισερχόμενων δεδομένων — έλεγχος και καθαρισμός των δεδομένων πριν από τη χρήση τους σε ερωτήματα.
-
Χρήση ORM — π.χ., Hibernate, που δημιουργεί αυτόματα ασφαλή ερωτήματα.
Παράδειγμα χρήσης 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();
Αυτή η προσέγγιση αποτρέπει την εισαγωγή κακόβουλου SQL κώδικα μέσω παραμέτρων.