문장 해킹하기
CityBook Libraries는 사용자가 제목으로 책을 검색할 수 있는 기능을 개발 중이에요. 시스템 보안이 걱정되어 SQL 인젝션 공격에 대비해 테스트해 보려고 합니다.
SQL 인젝션을 사용해 권한 없는 데이터를 가져올 수 있는지 확인하세요. HikariSetup 클래스는 이미 설정되어 있어요.
이 연습은 강의의 일부입니다
Java에서 PostgreSQL 데이터베이스 질의하기
연습 안내
- 모든 책을 읽을 수 있도록 하는 조건을 주입하도록
titleParameter를 변경하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
public class Main {
public static void main(String[] args) throws SQLException {
HikariDataSource ds = HikariSetup.createDataSource();
// Change the title to inject a condition that will allow reading all books
String titleParameter = "To Kill a Mockingbird";
String query = "SELECT * FROM books WHERE title = '" + titleParameter + "'";
try (Connection conn = ds.getConnection()) {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
System.out.printf("ID: %d, Title: %s (%d)%n", rs.getInt("book_id"), rs.getString("title"), rs.getInt("publication_year"));
}
}
}
}