CommencerCommencer gratuitement

Requêtes préparées

Après avoir découvert la vulnérabilité à l’injection SQL, CityBook Libraries a besoin que vous sécurisiez la fonctionnalité de recherche de livres. Vous allez passer des objets Statement simples à PreparedStatement pour empêcher les attaques par injection.

La classe HikariSetup est déjà configurée.

Cet exercice fait partie du cours

Interroger une base de données PostgreSQL en Java

Afficher le cours

Instructions

  • Utilisez un espace réservé pour le paramètre de titre.
  • Créez un PreparedStatement à partir de la connexion.
  • Définissez le paramètre title pour la requête préparée.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

public class Main {
    public static void main(String[] args) throws SQLException {
        HikariDataSource ds = HikariSetup.createDataSource();
        // Set the parameter in the query
        String query = "SELECT * FROM books WHERE title = ____";
        // Create the prepared statement
        try (Connection conn = ds.getConnection();
            PreparedStatement pstmt = ____.____(query)) {
            // Set the title parameter
            pstmt.____(____, "Clean Code");
            try (ResultSet rs = pstmt.executeQuery()) {
                while (rs.next()) {
                    System.out.printf("ID: %d, Title: %s (%d)%n", rs.getInt("book_id"), rs.getString("title"), rs.getInt("publication_year"));
                }
            }
        }
    }
}
Modifier et exécuter le code