Prepared Statement
SQL 인젝션 취약점을 확인한 후, CityBook Libraries에서는 도서 검색 기능을 보안 강화해야 합니다. 주입 공격을 막기 위해 간단한 Statement 객체 대신 PreparedStatement로 전환해 주세요.
HikariSetup 클래스는 이미 구성되어 있습니다.
이 연습은 강의의 일부입니다
Java에서 PostgreSQL 데이터베이스 질의하기
연습 안내
- 제목 매개변수에 플레이스홀더를 사용하세요.
- 커넥션에서
PreparedStatement를 생성하세요. - 준비된 문에
title매개변수를 설정하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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"));
}
}
}
}
}