시작하기무료로 시작하기

문장 해킹하기

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"));
            }
        }
    }
}
코드 편집 및 실행