Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Administracja serwerem i bezpieczeństwo

Która praktyka NIE zwiększa bezpieczeństwa aplikacji internetowej korzystającej z bazy danych?

A. nadawanie kontu aplikacji w bazie tylko niezbędnych uprawnień
Źle. Ograniczone uprawnienia konta zmniejszają szkody po ewentualnym ataku.
B. stosowanie zapytań przygotowanych z parametrami
Źle. Zapytania przygotowane chronią przed wstrzykiwaniem SQL, więc zwiększają bezpieczeństwo.
C. wyświetlanie użytkownikowi pełnych komunikatów błędów zwracanych przez bazę danych
Dobrze. Pełne komunikaty błędów zdradzają strukturę bazy i ułatwiają atak.
D. przechowywanie haseł użytkowników w postaci skrótów, np. funkcją password_hash()
Źle. Skróty haseł z solą chronią hasła nawet po wycieku bazy.

Pełny komunikat błędu bazy danych zdradza nazwy tabel i kolumn, fragment zapytania, a czasem ścieżki plików na serwerze. Dla atakującego to gotowa mapa aplikacji, która ułatwia np. wstrzykiwanie SQL. Dlatego ta praktyka nie zwiększa bezpieczeństwa, tylko je obniża.

Poprawnie użytkownik dostaje krótki, ogólny komunikat, np. „Wystąpił błąd, spróbuj później”, a szczegóły trafiają do dziennika na serwerze, np. przez error_log(). Na serwerze produkcyjnym w pliku php.ini ustawia się display_errors = Off. Szczegółowe błędy na ekranie są dopuszczalne tylko na komputerze programisty.

Ta sama zasada dotyczy stron z błędem 404 czy 500: pokazują prosty komunikat, bez szczegółów technicznych.

Każda z błędnych odpowiedzi opisuje środek, który realnie chroni aplikację. Zapytania przygotowane, np. mysqli_prepare() z bind_param(), przesyłają dane oddzielnie od treści zapytania, więc wpisany w formularz fragment SQL nie zostanie wykonany.

Funkcja password_hash() zamienia hasło na skrót z losową solą. Nawet po wycieku bazy hasła nie da się po prostu odczytać, a sprawdza się je funkcją password_verify().

Zasada najmniejszych uprawnień oznacza, że konto, którym aplikacja łączy się z bazą, ma tylko potrzebne prawa, np. SELECT i INSERT, bez DROP. Udany atak wyrządzi wtedy mniejsze szkody.

Szczegółowe komunikaty działają dokładnie odwrotnie: niczego nie blokują, a tylko podpowiadają atakującemu, jak zbudowana jest baza.

Te trzy środki uzupełniają się: zapytania przygotowane blokują atak, skróty chronią hasła, a ograniczone prawa zmniejszają szkody, gdyby atak jednak się udał.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.