Sobes.tech
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);

Επομένως, για ασφάλεια κατά τη δοκιμή και την ανάπτυξη, συνιστάται η χρήση παραμετροποιημένων ερωτήσεων.