Hakowanie zapytań
Biblioteki CityBook tworzą funkcję wyszukiwania, która pozwala użytkownikom znajdować książki według tytułu. Zależy ci na bezpieczeństwie systemu, dlatego postanawiasz przetestować go pod kątem ataków SQL injection.
Sprawdź, czy uda ci się pobrać nieautoryzowane dane za pomocą SQL injection. Klasa HikariSetup jest już skonfigurowana.
To ćwiczenie jest częścią kursu
Zapytania do bazy danych PostgreSQL w Javie
Instrukcje do ćwiczenia
- Zmień wartość
titleParameter, aby wstrzyknąć warunek umożliwiający odczytanie wszystkich książek.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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"));
}
}
}
}