Sobes.tech
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 κώδικα μέσω παραμέτρων.