Wszystkie zagadnienia: Teoria
średni sieciklient-serwerpeer-to-peerJavaScriptPHPCMSmatura rozszerzona z informatyki

Architektura klient-serwer i peer-to-peer; kod po stronie klienta i serwera, CMS

Model klient-serwer i peer-to-peer, podział pracy strony WWW między serwerem (PHP) a przeglądarką (JavaScript), walidacja formularzy i CMS.

01

Opis

W modelu klient-serwer jedna strona udostępnia usługę, a druga z niej korzysta. Serwer czeka na żądania i odpowiada na nie – serwer WWW wysyła strony, serwer poczty przechowuje i przekazuje listy, serwer DNS zamienia nazwy na adresy. Klient, czyli przeglądarka, program pocztowy albo aplikacja w telefonie, inicjuje połączenie i prosi o konkretną rzecz. Role są stałe: klient nie obsługuje innych klientów, a serwer musi być dostępny cały czas pod znanym adresem. Rozmowa przeglądarki z serwerem WWW toczy się protokołem HTTP lub HTTPS.

W modelu peer-to-peer (P2P) każdy węzeł jest jednocześnie klientem i serwerem. Nie ma centralnej maszyny – komputery łączą się ze sobą bezpośrednio i wymieniają dane między sobą. Tak działa BitTorrent: pobierając plik, jednocześnie udostępnia się już pobrane fragmenty innym. Zaletą jest brak pojedynczego punktu awarii i rosnąca wydajność wraz z liczbą uczestników, wadą – trudniejsza kontrola nad tym, kto i co udostępnia.

Strona internetowa powstaje w dwóch miejscach naraz i podział ten decyduje o tym, co jest możliwe i co jest bezpieczne. Kod po stronie serwera wykonuje się na maszynie, na której stoi strona – zanim cokolwiek trafi do przeglądarki. Ma dostęp do bazy danych i plików, a użytkownik nigdy nie widzi jego treści; dostaje wyłącznie wynik. Typowym przykładem jest PHP. Kod po stronie klienta wykonuje przeglądarka na komputerze użytkownika. Odpowiada za interakcję: reakcję na kliknięcie, animacje, ukrywanie i pokazywanie elementów bez przeładowania strony. To domena JavaScriptu. Ten kod jest w całości widoczny dla każdego, kto otworzy podgląd źródła.

Z tej różnicy wynika najważniejsza konsekwencja praktyczna: kodowi po stronie klienta nie można ufać. Użytkownik może go podejrzeć, zmienić albo wyłączyć.

Cztery zasady, które porządkują całą resztę:

  • „Serwer" to rola, a nie osobna maszyna. Decyduje o niej to, że program czeka na żądania pod stałym adresem – serwerem bywa zwykły komputer.
  • Rozmowę zawsze zaczyna klient. Serwer sam nie zapuka do przeglądarki, dlatego musi być osiągalny cały czas.
  • W peer-to-peer role zmieniają się w locie. Ten sam komputer raz pobiera fragment pliku, a raz wysyła go dalej.
  • Co dotrze do przeglądarki, użytkownik może obejrzeć i zmienić. Kod klienta odpowiada za wygodę, kod serwera za poprawność i bezpieczeństwo.
02

Tabela

Co wykonuje się po stronie serwera, a co u klienta
CzynnośćGdzie się wykonujeDlaczego tam
Pobranie rekordów z bazy danychserwertylko kod serwerowy sięga do bazy; jej hasło nie może trafić do przeglądarki
Zbudowanie kodu HTML strony z danychserwerdo klienta ma pójść gotowy wynik, a nie sposób jego powstania
Sprawdzenie formatu adresu e-mail w trakcie wpisywaniaklientnatychmiastowy komunikat bez wysyłania formularza
Ostateczne sprawdzenie danych przed zapisemserwerwalidację u klienta da się ominąć
Rozwinięcie menu po kliknięciuklientzmiana dotyczy wyglądu już wczytanej strony
Animacja i efekt przy przewijaniuklientdzieje się w oknie przeglądarki, bez udziału sieci
Sprawdzenie hasła przy logowaniuserwerwysłanie hasła do przeglądarki dałoby je każdemu
Zapamiętanie, kto jest zalogowanyserwerklient trzyma tylko identyfikator sesji, uprawnienia przyznaje serwer
Zapisanie zamówienia w sklepieserwerzapis ma być trwały i wspólny dla wszystkich
Podpowiedzi wyszukiwania w trakcie pisaniaobie stronyJavaScript pyta w tle, ale szuka w bazie serwer
03

Porównanie

CechaSerwer (PHP)Klient (JavaScript)
Gdzie się wykonujena serwerzew przeglądarce
Widoczność koduukrytyw pełni widoczny
Dostęp do bazy danychtaknie bezpośrednio
Działa bez przeładowania stronynietak
Można wyłączyćnietak
Nazwa angielskaserver-side, back-endclient-side, front-end
04

CMS

CMS (system zarządzania treścią) pozwala prowadzić stronę bez pisania kodu. Treść dodaje się przez panel administracyjny w przeglądarce, podobnie jak w edytorze tekstu, a system sam składa z niej gotowe podstrony. To typowa aplikacja klient-serwer: panel działa w przeglądarce, a treść i logika siedzą na serwerze.

Kluczowa idea to oddzielenie treści od wyglądu. Teksty i zdjęcia trafiają do bazy danych, a o wygląd dba szablon. Zmiana szablonu przebudowuje całą stronę bez ruszania treści; dodanie artykułu nie wymaga znajomości HTML. Najbardziej znane systemy to WordPress, Joomla i Drupal. Rozbudowuje się je wtyczkami, które dokładają funkcje – sklep, formularz kontaktowy, galerię.

Strona oparta na CMS jest generowana dynamicznie – treść pobierana jest z bazy danych przy każdym wejściu, w odróżnieniu od strony statycznej, gdzie każdy plik istnieje gotowy na serwerze. Wadą jest to, że gotowy system bywa cięższy i wolniejszy od strony napisanej ręcznie, a jego popularność czyni go celem ataków. Nieaktualizowany CMS z przestarzałymi wtyczkami to jedno z najczęstszych źródeł włamań na strony.

W porównaniu ze stroną pisaną ręcznie CMS wygrywa krótkim czasem uruchomienia i tym, że aktualizacja treści nie wymaga wiedzy programistycznej. Strona pisana ręcznie jest za to wydajniejsza i ma mniejszą powierzchnię ataku – bez panelu logowania i wtyczek – ale każdą nową funkcję trzeba w niej napisać samodzielnie.

05

Typowe błędy

Uznanie, że w podglądzie źródła widać całą stronę. Widać wyłącznie to, co serwer wysłał: HTML, style i JavaScript. Kod PHP wykonał się wcześniej – w źródle jest jego wynik, a nie polecenie. Zdanie „użytkownik może zobaczyć kod PHP" jest w teście prawda/fałsz zawsze fałszywe.

Traktowanie walidacji w JavaScripcie jako zabezpieczenia. JavaScript można wyłączyć, podmienić w narzędziach przeglądarki albo pominąć, wysyłając dane bez formularza. Sprawdzenie u klienta daje natychmiastowy komunikat, ale o przyjęciu danych rozstrzyga dopiero serwer. W odpowiedzi opisowej trzeba napisać oba zdania – za samo „sprawdzam poprawność w JavaScripcie" punktu nie ma.

Uznanie, że JavaScript nie może pobierać żadnych danych. Może: czyta pola formularza wypełniane przez użytkownika i potrafi w tle dopytać serwer, bez przeładowania strony. Fałszywe jest natomiast zdanie z tego samego zestawu maturalnego, że PHP zawsze pobiera dane od klienta – strona bez formularza wykonuje się bez żadnej informacji od użytkownika.

Mylenie modelu logicznego z topologią i twierdzenie, że w P2P nie ma serwera. Klient-serwer i peer-to-peer mówią o rolach programów, a nie o układzie kabli – tym zajmują się topologie sieci. W sieci P2P funkcja serwera nie znika – pełni ją każdy węzeł, równolegle z rolą klienta. Poprawna odpowiedź brzmi „nie ma serwera centralnego", a nie „nie ma serwera".

Mylenie CMS-u z językiem albo z hostingiem. CMS to gotowy program zainstalowany na serwerze, hosting to miejsce, w którym on stoi, a HTML i PHP to języki, w których go napisano. WordPress nie jest ani językiem, ani serwerem.

06

Zapamiętaj

  • Klient-serwer: stałe role, serwer udostępnia usługę pod znanym adresem; peer-to-peer: każdy węzeł jest klientem i serwerem naraz, bez centralnego serwera.
  • Serwer to rola, nie koniecznie osobna maszyna – czeka na żądania, a nie wysyła ich jako pierwszy.
  • PHP wykonuje się na serwerze, JavaScript w przeglądarce.
  • Kod PHP jest ukryty, kod JavaScript widoczny dla każdego.
  • Do bazy danych sięga kod serwerowy, nie klient.
  • Walidacja po stronie klienta to wygoda; prawdziwe sprawdzenie musi być na serwerze.
  • CMS pozwala zarządzać treścią bez znajomości kodu: treść w bazie danych, wygląd w szablonie, funkcje we wtyczkach; nieaktualizowany CMS jest częstym celem ataków.
07

Sprawdź się

Fragment sklepu internetowego:

Element stronyCo obserwujemy
Pole „adres e-mail"po wpisaniu adresu bez znaku małpy od razu pojawia się komunikat
Przycisk „Zaloguj"strona wczytuje się na nowo i pokazuje imię zalogowanego użytkownika
Lista produktówprzy każdym wejściu inna, bo pochodzi z bazy sklepu
Podgląd źródła stronywidać HTML i funkcje JavaScriptu, nie widać ani jednej linii PHP

Uzupełnij tabelę:

PytanieOdpowiedź
Sprawdzenie formatu adresu e-mail w trakcie wpisywania – klient czy serwer?
Pobranie listy produktów z bazy – klient czy serwer?
Porównanie hasła z zapisanym w bazie – klient czy serwer?
Animacja przy przewijaniu – klient czy serwer?
Język, którego kodu nie widać w podglądzie źródła
Język, którego kod widzi każdy odwiedzający stronę
Skrót systemu pozwalającego prowadzić stronę bez pisania kodu

Sprawdzanie danych w przeglądarce służy i nie jest zabezpieczeniem, bo można je . Model sieci, w którym każdy komputer jest naraz klientem i serwerem, to .

08

Najczęściej zadawane pytania

Dlaczego nie widzę kodu PHP w podglądzie źródła?

Bo wykonał się na serwerze, a do przeglądarki poszedł wyłącznie jego wynik w postaci HTML. Kod źródłowy nigdy nie opuszcza serwera.

Po co w ogóle sprawdzać dane w JavaScripcie?

Dla wygody użytkownika – natychmiastowy komunikat o błędzie jest przyjemniejszy niż przeładowanie strony. To dodatek do walidacji serwerowej, nie jej zamiennik.

Czy JavaScript działa tylko w przeglądarce?

Historycznie tak, ale istnieją środowiska pozwalające uruchamiać go również po stronie serwera. Na maturze obowiązuje jednak klasyczny podział.

Czym różni się sieć peer-to-peer od klient-serwer?

W klient-serwer jest jedna maszyna, która obsługuje wszystkich; gdy padnie, usługa znika. W peer-to-peer uczestnicy wymieniają dane bezpośrednio między sobą, więc nie ma centralnego punktu awarii, ale też nikt nie gwarantuje, że dany zasób będzie dostępny.

Czy CMS zastępuje programistę?

Przy typowej stronie informacyjnej zwykle tak. Przy nietypowych funkcjach i integracjach nadal potrzebny jest ktoś, kto napisze kod.

Czym różni się strona statyczna od dynamicznej?

Statyczna to gotowe pliki wysyłane bez zmian. Dynamiczna jest składana przy każdym wejściu z danych w bazie – i tak działa CMS.

Dlaczego aktualizacje CMS są tak ważne?

Bo łatają znane luki. Skoro system jest popularny, atakujący masowo skanują sieć w poszukiwaniu nieaktualnych instalacji.

Przećwicz w zadaniach maturalnych

Do tego hasła nie mamy jeszcze przypisanych pojedynczych zadań. Cały spis zadań maturalnych z tego działu jest tutaj:

Zadania z działu: Teoretyczne

↗

Powiązane zagadnienia