KWALIFIKACJA INF3 - CZERWIEC 2022 (test 2)

PYTANIE NR 36.
Które z zadań programistycznych może być wykonane tylko po stronie klienta przeglądarki?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Sprawdzanie danych w polu tekstowym w czasie rzeczywistym jest typowym zadaniem wykonywanym w przeglądarce (np. JavaScript) bez potrzeby kontaktu z serwerem. Pozostałe czynności wymagają dostępu do bazy lub egzekwowania uprawnień, więc muszą być realizowane po stronie serwera, aby były bezpieczne i wiarygodne.

Pełne wyjaśnienie:

Zadanie "Sprawdzanie danych wpisywanych do pola tekstowego w czasie rzeczywistym" dotyczy natychmiastowej reakcji interfejsu na wpisy użytkownika (np. sprawdzanie długości, formatu e-mail, dozwolonych znaków, podpowiedzi). Taka walidacja może działać całkowicie w przeglądarce, ponieważ korzysta wyłącznie z danych dostępnych lokalnie w formularzu i ma głównie cel użytecznościowy (UX): szybka informacja zwrotna i ograniczenie liczby błędnych wysłań formularza.

Odpowiedź "Sprawdzenie hasła użytkownika w bazie danych powiązanej z aplikacją internetową" wymaga dostępu do bazy danych oraz do logiki uwierzytelniania. Przeglądarka nie powinna mieć bezpośrednich uprawnień do bazy, a sama weryfikacja hasła nie może polegać na mechanizmach klienckich, bo klient jest środowiskiem niezaufanym (kod można zmienić, ominąć, podmienić żądania).

Odpowiedź "Zapisanie danych pobranych z formularza w bazie danych powiązanej z aplikacją internetową" również wymaga serwera: to on przyjmuje żądanie, weryfikuje dane, autoryzuje użytkownika i dopiero potem wykonuje operację zapisu w bazie. Z perspektywy bezpieczeństwa i spójności danych zapis nie może być realizowany przez samą przeglądarkę z bezpośrednim dostępem do bazy.

Odpowiedź "Bezpieczne wyświetlenie personalizowanej zawartości strony ze względu na prawa użytkownika aplikacji" odnosi się do kontroli dostępu (autoryzacji). Nawet jeśli przeglądarka może ukryć elementy interfejsu, to nie jest to zabezpieczenie. O tym, jakie dane wolno zwrócić, musi decydować serwer na podstawie wiarygodnej sesji/tokena i reguł uprawnień. Klient może jedynie prezentować to, co serwer dopuścił do wyświetlenia.

Wskazówka egzaminacyjna: walidacja w przeglądarce poprawia wygodę, ale nie zastępuje walidacji i kontroli uprawnień po stronie serwera. Gdy w treści odpowiedzi pojawia się baza danych, hasła lub prawa użytkownika, zwykle oznacza to konieczność backendu.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Walidacja po stronie klienta to sprawdzanie danych w przeglądarce (np. w JavaScript lub przez atrybuty HTML), zanim formularz trafi na serwer. Służy głównie wygodzie: szybkie komunikaty, podświetlenie błędów, blokada wysyłki przy oczywistych brakach. Nie jest to zabezpieczenie, bo można ją ominąć.
Przeglądarka jest środowiskiem niezaufanym: użytkownik może zmienić kod, wyłączyć skrypty, wysłać żądanie innym narzędziem albo podmienić dane. Dlatego serwer musi ponownie sprawdzić wejście (walidacja) i dopiero potem wykonać operacje w bazie czy zwrócić dane. Klient poprawia UX, nie bezpieczeństwo.
Po stronie serwera muszą być realizowane zadania wymagające zaufania i dostępu do zasobów: weryfikacja logowania (hasła), autoryzacja i kontrola uprawnień, odczyt/zapis w bazie danych, generowanie odpowiedzi zależnej od ról użytkownika oraz egzekwowanie reguł biznesowych. Klient nie powinien mieć bezpośredniego dostępu do bazy.
To reagowanie interfejsu na każdy wpis (np. zdarzenia klawiatury) i natychmiastowe informowanie o błędach: za krótki login, niedozwolone znaki, brak znaku @ w e-mailu, przekroczony limit. Takie sprawdzanie jest typowe dla front-endu, bo nie wymaga bazy danych ani uprawnień, a ma poprawić szybkość i wygodę wypełniania.
Nie w sposób bezpieczny. Przeglądarka może co najwyżej sprawdzić reguły typu "min. długość" lub "wymagany znak specjalny". Porównanie hasła z danymi konta wymaga serwera, bo to on ma dostęp do bazy i przechowuje hasła w postaci bezpiecznych skrótów. Klient nie powinien znać danych weryfikacyjnych.
Zapis do bazy oznacza wykonanie operacji na zasobie chronionym. Backend przyjmuje żądanie, sprawdza poprawność danych, uwierzytelnia i autoryzuje użytkownika, a następnie wykonuje zapytanie do bazy. Gdyby klient zapisywał bezpośrednio, trudno byłoby kontrolować uprawnienia i chronić bazę przed nadużyciami.
Sygnałami są: "baza danych", "sprawdzenie hasła", "uprawnienia/prawa użytkownika", "bezpieczne wyświetlenie danych", "zapis/odczyt danych", "autoryzacja". To elementy, które muszą być egzekwowane na serwerze, bo tylko tam da się kontrolować dostęp i zaufać logice. Klient może jedynie prezentować wynik otrzymany z serwera.
Częsty błąd to uznanie, że skoro coś "da się" napisać w JavaScript, to jest to właściwe rozwiązanie. Uczniowie mylą też walidację UX z zabezpieczeniem i zakładają, że ukrycie elementu w interfejsie chroni dane. Warto pamiętać: klient można zmodyfikować, a serwer musi weryfikować dane i uprawnienia.
Może dotyczyć wyglądu i wygody (np. zapamiętanie motywu, układ paneli), ale personalizacja wynikająca z praw użytkownika musi być po stronie serwera. Klient może ukryć elementy, lecz to nie zabezpiecza danych. Serwer powinien zwracać tylko to, do czego użytkownik ma uprawnienia, a klient jedynie to renderuje.
Powtórz różnice: walidacja klienta (UX) vs walidacja serwera (bezpieczeństwo). Naucz się wskazywać, które operacje wymagają bazy danych i kontroli dostępu. Przećwicz scenariusze: logowanie, rejestracja, zapis formularza, role użytkowników. Dobra metoda: przy każdej opcji zapytaj "czy temu można zaufać bez serwera?".
info

To pytanie poprawnie rozwiązuje 54% zdających egzamin. trudne

Eksperci podkreślają: "Sprawdzanie danych w polu tekstowym w czasie rzeczywistym jest typowym zadaniem wykonywanym w przeglądarce (np. JavaScript) bez potrzeby kontaktu z serwerem."

Źródła:

  • MDN Web Docs: Client-side form validation (Constraint Validation API) - https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Forms/Form_validation (accessed 2026-02-27)
  • MDN Web Docs: Web security - https://developer.mozilla.org/en-US/docs/Web/Security (accessed 2026-02-27)
  • OWASP Cheat Sheet Series: Authorization Cheat Sheet - https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html (accessed 2026-02-27)

Materiały:

  • Dokumentacja MDN o walidacji formularzy (Constraint Validation API)
  • Materiały o OWASP: zasady kontroli dostępu i walidacji danych
  • Podstawy architektury klient–serwer i REST API w aplikacjach webowych

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego