Prepared Statements
Po odhalení zranitelnosti SQL injection potřebuje CityBook Libraries zabezpečit funkci vyhledávání knih. Přejdeš od jednoduchých objektů Statement na PreparedStatement, čímž injection útokům předejdeš.
Třída HikariSetup je už nakonfigurovaná.
Toto cvičení je součástí kurzu
Dotazování PostgreSQL databáze v Javě
Pokyny k cvičení
- Použij zástupný symbol (placeholder) pro parametr title.
- Z připojení vytvoř
PreparedStatement. - Nastav parametr
titlepro prepared statement.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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"));
}
}
}
}
}