Tấn công vào câu lệnh
CityBook Libraries đang phát triển tính năng tìm kiếm cho phép người dùng tra cứu sách theo tiêu đề. Bạn lo ngại về bảo mật hệ thống, nên đã quyết định kiểm thử đối với các cuộc tấn công SQL injection.
Hãy xác minh xem bạn có thể truy xuất dữ liệu trái phép bằng SQL injection hay không. Lớp HikariSetup đã được cấu hình sẵn.
Bài tập này là một phần của khóa học
Truy vấn cơ sở dữ liệu PostgreSQL trong Java
Hướng dẫn bài tập
- Thay đổi
titleParameterđể chèn một điều kiện cho phép đọc toàn bộ sách.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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"));
}
}
}
}