Зламуємо запити
CityBook Libraries розробляє функцію пошуку, що дає змогу користувачам знаходити книжки за назвою. Ви турбуєтеся про безпеку системи, тож вирішили перевірити її на стійкість до атак SQL‑ін'єкції.
Перевірте, чи можна отримати несанкціоновані дані за допомогою SQL‑ін'єкції. Клас HikariSetup уже налаштовано.
Ця вправа є частиною курсу
Запити до бази даних PostgreSQL у Java
Інструкції до вправи
- Змініть
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"));
}
}
}
}