KWALIFIKACJA INF3 - CZERWIEC 2018

PYTANIE NR 37.
Które z zadań programistycznych powinno być wykonane po stronie serwera?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zapis danych w bazie danych powinien odbywać się po stronie serwera, bo wymaga dostępu do zasobów chronionych (np. bazy) oraz kontroli uprawnień i bezpieczeństwa.
Pozostałe czynności (zmiana stylu po najechaniu kursorem, reakcje "w czasie rzeczywistym", ukrywanie/pokazywanie elementów) dotyczą interfejsu i są typowe dla kodu uruchamianego w przeglądarce.

Pełne wyjaśnienie:

W aplikacji internetowej rozróżnia się zadania wykonywane po stronie klienta (w przeglądarce) oraz po stronie serwera (na serwerze aplikacyjnym). Klient odpowiada głównie za prezentację i interakcję z użytkownikiem (HTML/CSS/JavaScript), a serwer za logikę biznesową, bezpieczeństwo oraz operacje na zasobach, do których przeglądarka nie powinna mieć bezpośredniego dostępu.

Poprawna jest odpowiedź: "Zapisanie danych pobranych z aplikacji internetowej w bazie danych." Taki zapis wymaga połączenia z bazą, obsługi uprawnień, kontroli transakcji i odporności na nadużycia. Serwer może też wykonać ostateczną walidację i dopiero wtedy utrwalić dane, dzięki czemu nie ufa bezkrytycznie temu, co wysyła przeglądarka.

Dlaczego pozostałe odpowiedzi nie są zadaniami serwerowymi?

  • "Zmiana stylu HTML na stronie wywołana przesunięciem kursora." To reakcja interfejsu na zdarzenie użytkownika (np. hover/mousemove). Tego typu efekty realizuje się CSS lub JavaScript w przeglądarce, bez angażowania serwera.
  • "Sprawdzanie danych wpisywanych do pola tekstowego w czasie rzeczywistym." Może oznaczać walidację na bieżąco w UI (np. format e-mail, długość hasła). To typowo klient. Oczywiście serwer też powinien weryfikować dane po wysłaniu formularza, ale sformułowanie "w czasie rzeczywistym" w kontekście pola tekstowego odnosi się zwykle do walidacji/feedbacku w przeglądarce.
  • "Ukrywanie i pokazywanie elementów strony w zależności od aktualnego stanu kursora." To ponownie manipulacja widocznością elementów (DOM/CSS) zależna od interakcji. Jest to logika prezentacji wykonywana lokalnie u użytkownika.

Wskazówka egzaminacyjna: jeśli czynność wymaga dostępu do bazy danych, plików na serwerze, tajnych kluczy lub kontroli uprawnień, to jest to zadanie serwerowe. Jeśli dotyczy wyglądu strony i reakcji na kliknięcia, ruch myszy czy dynamiczne ukrywanie elementów, to zwykle jest to zadanie klienckie.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To znaczy, że logika uruchamia się na serwerze (back-end), a nie w przeglądarce użytkownika. Serwer odbiera żądanie (np. z formularza lub API), przetwarza dane, może połączyć się z bazą danych i zwraca odpowiedź. Użytkownik nie ma bezpośredniego dostępu do kodu i zasobów serwera.
Najczęściej są to zadania wymagające dostępu do zasobów chronionych: bazy danych, plików na serwerze, kont użytkowników, uprawnień i sesji. Jeśli operacja ma skutki trwałe (np. zapis, modyfikacja, usunięcie danych) albo wymaga weryfikacji uprawnień, powinna być po stronie serwera.
Przeglądarka nie powinna znać haseł dostępowych ani mieć bezpośredniego połączenia z bazą, bo to ułatwia ataki i obejście kontroli. Serwer może uwierzytelnić użytkownika, sprawdzić uprawnienia, zwalidować dane i dopiero wtedy wykonać bezpieczny zapis w bazie danych.
Nie zawsze. Klient często robi walidację "na żywo" dla wygody użytkownika (np. komunikat o błędzie formatu), ale serwer i tak musi wykonać walidację końcową po otrzymaniu danych. Walidacja po stronie klienta poprawia UX, a walidacja po stronie serwera zapewnia bezpieczeństwo.
Typowe są: manipulacja DOM, zmiana klas CSS, animacje, reagowanie na zdarzenia (kliknięcie, przesunięcie kursora, przewijanie), ukrywanie/pokazywanie elementów, wstępna walidacja pól formularza oraz komunikacja z API. To są działania związane z interfejsem użytkownika.
Zwykle nie wymaga. Serwer może jednak zdecydować, jakie dane lub elementy w ogóle wysłać (np. inny widok dla roli "admin"), ale samo dynamiczne przełączanie widoczności po interakcji użytkownika realizuje się w przeglądarce. To rozróżnienie jest ważne w pytaniach egzaminacyjnych.
Najczęściej oznacza natychmiastową reakcję w UI podczas pisania (np. sprawdzenie długości, dozwolonych znaków, podświetlenie błędu). Takie sprawdzanie robi się w JavaScript w przeglądarce. Jeśli weryfikacja wymaga bazy (np. czy login jest wolny), może to być zapytanie do serwera przez API.
Klient jest pod kontrolą użytkownika, więc walidację w przeglądarce można ominąć (np. zmieniając żądanie w narzędziach developerskich). Skutkiem mogą być błędy danych, obejście ograniczeń, a nawet podatności. Dlatego serwer musi traktować dane wejściowe jako niepewne i sprawdzać je samodzielnie.
Front-end wysyła żądanie HTTP/HTTPS do API (np. REST) z danymi formularza, zwykle w JSON lub jako dane formularza. Back-end odbiera dane, sprawdza je, wykonuje operację w bazie i odsyła odpowiedź (np. status powodzenia, identyfikator rekordu, komunikat błędu).
Ćwicz rozpoznawanie: co dotyczy UI (DOM, CSS, zdarzenia), a co dotyczy logiki i danych (API, sesje, baza). Rozwiązuj testy z przykładami operacji CRUD i walidacji. Pomaga też zrobienie prostej aplikacji: formularz w przeglądarce + endpoint na serwerze + zapis w bazie.
info

To pytanie poprawnie rozwiązuje 62% zdających egzamin. średnie

Źródła:

  • MDN Web Docs: Server-side website programming - https://developer.mozilla.org/en-US/docs/Learn/Server-side (dostęp: 2026-02-27)
  • MDN Web Docs: Client-side web APIs - https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs (dostęp: 2026-02-27)
  • OWASP: Input Validation - https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja MDN o programowaniu po stronie serwera
  • Dokumentacja MDN o JavaScript i zdarzeniach DOM
  • Materiały o bezpieczeństwie aplikacji webowych (walidacja po stronie serwera, zaufanie do danych wejściowych)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego