Junior — Middle
Ποιοι τύποι ερωτημάτων θεωρείτε πιο ασφαλείς και γιατί;
sobes.tech AI
Απάντηση από AI
Οι πιο ασφαλείς είναι οι παραμετροποιημένες (prepared) ερωτήσεις και οι ερωτήσεις ORM, που διαφεύγουν αυτόματα τα δεδομένα εισόδου.
Ο λόγος είναι ότι αποτρέπουν τις SQL injections — όταν ένας επιτιθέμενος εισάγει κακόβουλο κώδικα SQL μέσω της εισόδου του χρήστη.
Παράδειγμα:
-
Σε μια παραμετροποιημένη ερώτηση, οι παράμετροι περνούν ξεχωριστά από τον κώδικα SQL, αποτρέποντας την αλλαγή της δομής της ερώτησης.
-
Σε αντίθεση με τη σύνδεση συμβολοσειρών, όπου η είσοδος του χρήστη εισάγεται άμεσα στην ερώτηση.
Για παράδειγμα, σε Java με JDBC:
String sql = "SELECT * FROM users WHERE username = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, userInput);
ResultSet rs = ps.executeQuery();
Αυτή η προσέγγιση είναι πιο ασφαλής από:
String sql = "SELECT * FROM users WHERE username = '" + userInput + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sql);
Επομένως, για ασφάλεια κατά τη δοκιμή και την ανάπτυξη, συνιστάται η χρήση παραμετροποιημένων ερωτήσεων.