05 WAI serwery www 2013


Serwery www
Budowa, zasada działania
Podstawowe operacje
serwera www
" Odwzorowywanie adresu
" Uwierzytelnianie
" ZarzÄ…dzanie wirtualnymi hostami
" Dostarczanie statycznej zawartości
pliku
" Dostarczanie zawartości dynamicznej
Budowa Apache
Warstwa serwera
" Mapowanie MIME
" RozwiÄ…zywanie adresu
1. http://www.neurozen.com/test?a=1&b2
2. http://www.neurozen.com/images/news.gif

ServerAdmin webmaster@neurozen.com
Alias /test /servlet/test
Alias /images /static/images
DocumentRoot /www/docs/neurozen
ServerName www.neurozen.com
ErrorLog logs/neurozen-error-log
CustomLog logs/neurozen-access-log common

Warstwa serwera
Warstwa serwera - przetwarzanie danych:
żð w typowych serwisach realizuje wiÄ™kszość zadaÅ„
funkcjonalnych
żð punkt centralny systemu rozproszonego - wrażliwość na
przeciążenia => ataki typu DoS (Denial of Service)
żð odpowiedzialna za synchronizacjÄ™ pracy klientów i,
częściowo, zachowanie spójności w warstwie danych
Oprogramowanie serwisu w ramach warstwy serwera:
żð integruje siÄ™ z wÅ‚aÅ›ciwym serwerem WWW, faktycznie
komunikujÄ…cym siÄ™ z klientem
żð jest uruchamiane prze serwer WWW w reakcji na żądanie
klienta, serwer WWW przekazuje klientowi wynik działania
oprogramowania
Warstwa serwera
żð Przetwarzanie typu wejÅ›cie/wyjÅ›cie - serwer WWW
przekazuje do modułu oprogramowania żądanie klienta i
traktuje wynik działania modułu jako pełną odpowiedz
przekazywanÄ… klientowi
żð Przetwarzanie wsadowe - serwer WWW przekazuje
klientowi statyczny zasób (np. kod HTML), przetwarzając
tylko niektóre, specjalnie oznaczone fragmenty; wynik
przetwarzania umieszczany jest w ramach zasobu zamiast
danego fragmentu
Serwery www (zródło: wikipedia)
Podział rynku
Technologie po stronie
serwera
" CGI podstawowy interfejs wymiany danych pomiędzy
serwerem WWW i oprogramowaniem; potocznie - moduły w
języku Perl, C lub skrypty systemu operacyjnego działające w
ramach przetwarzania typu wejście/wyjście
" Serwlety j. Java - poza implementacją CGI - większość
możliwości środowiska Java i kilka specyficznych udoskonaleń
obecnie część większego standardu J2EE
" ASP pierwsza poważna technologia przetwarzania wsadowego w
zasadzie tylko serwery WWW Microsoft (IIS)
" PHP najpopularniejsza i najbardziej dynamicznie rozwijajÄ…ca
siÄ™ technologia przetwarzania wsadowego pod wieloma
względami lepsze od ASP, ale część możliwości zależna od
systemu operacyjnego i zewnętrznych bibliotek
" JSP "odpowiedz" j. Java na PHP razem z serwletami tworzÄ…
środowisko łatwe do projektowania i "podziału kompetencji"
CGI
CGI - Common Gateway Interface:
" Pierwszy mechanizm oferowania dynamicznej
zawartości
" Mechanizm CGI zakłada, że podczas odbioru żądania
jest uruchamiany nowy proces (exec  w unix ach), do
którego zostanie przekazany określony zbiór
parametrów
" Typowy scenariusz działania:
1. odczytanie parametrów żądania (ze standardowego
wejścia albo ze zmiennych środowiskowych);
2. przetworzenie danych;
3. wyprowadzenie komunikatu http (na standardowe wyjście).
CGI  zmienne środowiskowe
Dwie grupy:
Związane z serwerem i żądaniem
" REMOTE_ADDR, REMOTE_HOST, REMOTE_USER
" QUERY_STRING
" SERVER_SOFTWARE, SERVER_NAME, SERVER_PORT
" SERVER_PROTOCOL, GATEWAY_INTERFACE
" REQUEST_METHOD (np. POST lub GET)
" PATH_INFO (virtual) PATH_TRANSLATED, SCRIPT_NAME
Związane z nagłówkami protokołu HTTP
" HTTP_AUTH_TYPE (zastosowana metoda uwierzytelniania)
" HTTP_CONTENT_TYPE, HTTP_CONTENT_LENGTH
" HTTP_ACCEPT_LANGUGE, HTTP_ACCEPT,
HTTP_USER_AGENT
" HTTP_COOKIE
Przykład CGI

Simple Form

Simple Form



Zip Code:
Name:




Przykład CGI
POST http://serwer.pl/cgi-bin/zip.cgi HTTP/1.1
Host: mysite.org
User-Agent: Mozilla/4.75 [pl] (WinNT; U)
Content-Length: 29
Content-Type: application/x-www-form-urlencoded
Remote-Address: 127.0.0.1
Remote-Host: demo
zip=84240&name=Kubus+Puchatek
Przykład CGI
#!/usr/local/bin/perl
sub ReadFormFields { ... }
sub PrintFormFields {
my $fieldsRef = shift;
my $key, $value;
print "Content-Type: text/html\n\n";
print "\nhello\n";
print "\n";
foreach $key (keys(%$fieldsRef)) {
$value = $$fieldsRef{$key};
print "

$key: $value

\n";
}
print "\n\n";
}
&ReadFormFields(\%fields);
&PrintFormFields(\%fields);
exit 0;
sub ReadFormFields
{
# ustawienie parametrów przekazanych do ReadFormFields
my $fieldsRef = shift;
my($key, $val, $buftmp, @buf parm);
#odczyt żądania
$buftmp = " ";
read(STDIN,$buftmp,$ENV{ CONTENT LENGTH });
$buftmp = $ENV{QUERY STRING} if (!$buf tmp);
@bufparm = split(/&/,$buf tmp);
#podział parametrów żądania na pary klucz - wartość
foreach $parm (@bufparm) {
($key, $val) = split(/=/,$parm);
# zamiana plusów i znaków specjalnych %XX
$val =~ s/\+/ /g;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/
pack("C",hex($1))/ge;
# użycie \0 do odseperowania pół
$$fieldsRef{$key} .=  \0 if (defined($$fieldsRef {$key}));
$$fieldsRef{$key} .= $val;
}
return($fieldsRef);
}
CGI  wady
" Ograniczona sprawność działania: konieczność
załadowania procesu przy obsłudze każdego
żądania stanowi znaczne obciążenie
" Problem współdzielenia zasobów
" Możliwość wywoływania poleceń po stronie
serwera tworzy istotne zagrożenie dla
bezpieczeństwa
" Przeplatanie kodu programu i znaczników HTML
" Zależny od serwera (nph  no-parse header)
Server Side Includes (SSI)
" Jak sugeruje nazwa, w tym wypadku kod jest wstawiany w
strukturÄ™ dokumentu HTML.
" Odpowiednie fragmenty dokumentu sÄ… ponownie generowane
przy każdym odwołaniu.
" Dynamika dokumentu bez konieczności stosowania CGI;
generowane sÄ… tylko wymagane fragmenty dokumentu.
" Możliwe zastosowania:
 Licznik odwołań;
 Data i czas; data ostatniej modyfikacji dokumentu;
 Wkomponowywanie innego pliku lub rezultatu wywołania programu
CGI.
" Rozszerzenia specyfikacji obejmujÄ… m. in.:
 Instrukcje warunkowe (if & else);
 Wysyłanie poczty.
SSI - składnia
" Pliki wymagające takiego przetwarzania wyróżniane zwykle
specjalnym rozszerzeniem: .sht .shtm lub .shtml.
" Elementy interpretowane umieszczone sÄ… w specjalnych
znacznikach wewnątrz kodu HTML. Przed wysłaniem
zawartość jest przeglądana i osadzone znaczniki są
interpretowane. Format znacznika (token) SSI jest
następujący:
czyli :
 obowiÄ…zkowy identyfiaktor zamykajÄ…cy.
SSI  dostępne polecenia
" config - Określa sposoby parsowania plików:
 errmsg  postać komunikatu o błędzie.
 timefmt  format wyświetlania czasu.
 sizefmt  Sposób wyświetlania rozmiaru plików (bytes lub abbrev).
" include  wstawienie do bieżącego dokumentu innej wersji:
 virtual  ścieżka wirtualna na serwerze.
 file  ścieżka względna w głąb bieżącego katalogu.
" echo  wyświetlenie wartości podanej zmiennej.
" fsize  wyświetla rozmiar pliku.
" flastmod  data ostatniej modyfikacji.
" exec  wykonanie zadanej komendy systemowej lub skryptu
CGI:
 cmd  uruchomienie podanego łańcucha jako komendy.
 cgi  uruchomienie zadanego skryptu CGI.
SSI  przykład

hello




SSI  przykład
#!/usr/local/bin/perl
sub ReadFormFields { . . . }
sub PrintFormFields
{
my $fieldsRef = shift;
my $key, $value;
foreach $key (keys(%$fieldsRef)) {
$value = $$fieldsRef{$key};
print "

$key: $value

\n";
}
}
&ReadFormFields(\%fields);
&PrintFormFields(\%fields);
exit 0;
Internet Server Application
Programming Interface (ISAPI)
" Technologia wprowadzona przez firmÄ™ Microsoft
(inny rodzaj NSAPI). Definiuje tzw. rozszerzenia
(extensions) i filtry (filters). Zapewnia równie dużą
elastyczność jak CGI.
" W przeciwieństwie do CGI proces obsługi rezyduje
w pamięci, a nie jest każdorazowo ładowany.
" Tak jak CGI, ISAPI daje możliwość wywoływania
funkcji systemowych (API) i innych dostarczonych
przez wybrany język programowania.
" Brak przenośność kodu (zależny od API
konkretnego dostawcy)  określanej jako
proprietary API
Internet Server Application
Programming Interface (ISAPI)
" Przykład -> plik isapi.cpp
PHP
" PHP  dziÅ› jedna z najpowszechniej stosowanych i
najprężniej rozwijających się technologii
internetowych
" PoczÄ…tki: rok 1995 i Rasmus Lerdorf
"  Obiektowość a cel projektu PHP
" Kolejne wersje  obiektowe :
- 3. z połowy roku 1998
- 4. z połowy roku 2000
- 5. z lutego 2003  milowy krok w historii OO PHP
czerwiec 2013- wersja 5.5
" PHP językiem hybrydowym
" Przyszłość: wersja 6. oferująca silne wsparcie OO
PHP - PHP Hypertext Preprocessor
" Jest językiem skryptowym z elementami
obiektowości
" Osadzanym w HTML u
" Interpreter języka znajduje się na serwerze
" Użytkownik nie widzi kodu PHP, gdyż wykonuje się
on po stronie serwera !!!!
" Posiada wysoką funkcjonalność, porównywalną z
innymi językami programowania
" Bardzo Å‚atwy do opanowania
" W pełni obsługuje bazy danych
" Szybki i oszczędza zasoby serwera
" Dostępny dla wielu serwerów www,
" Rozwijany na zasadach Open Source
Popularność języków prog.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Konfiguracja
" Motor Zend  kod bajtowy
" Komunikacja z serwerem www
" CGI - (Common Gateway Interface). oferuje
administratorowi zmiany wielu ustawień dotyczących
bezpieczeństwa wykonywanych skryptów.
" Moduł serwera - do najpopularniejszych serwerów
można podłączyć PHP jako moduł. Znacząco zwiększa
wydajność, lecz utrudnia zachowanie odpowiedniego
poziomu bezpieczeństwa na serwerze.
" FastCGI - rozwiÄ…zanie Å‚Ä…czÄ…ce w sobie zalety CGI oraz
wydajność modułów  słabo udokumentowane, wymaga
niestandardowych dodatków, utrudniona administracja
" Konkurencja:
 ASP.NET
 JSP/servlety
" RozwiÄ…zania te z biegiem czasu
bardzo się do siebie zbliżają
(interpretacja/JIT/maszyna
wirtualna)
Sesja HTTP
" Potrzebna, gdy serwer chce śledzić
poczynania użytkownika (tzn. jego kolejne
żądania)
 Utrzymywanie koszyka zakupów użytkownika
 Zapisywanie informacji o autoryzacji dostępu
" Sesje są problemem dla serwerów HTTP
 Brak  natywnego mechanizmu sesji HTTP
(bezstanowość)
 Rozszerzenie serwera (np. PHP/ASP.NET/JSP)
musi dostarczać zarządzanie sesją oraz API
sesji dla programisty
 Współdzielenie sesji przez wszystkie
przeglÄ…darki (jednego typu)
 RFC 2965 lub 6265
Sesja
Dwie podstawowe funkcje
" Åšledzenie
" Utrzymanie
Pracownicy
Site2.php
Site1.php
Żądanie
Session
Åšledzenie i zarzÄ…dzanie sesjÄ…
Identyfikator sesji powinien być
przechowywany po stronie serwera i stronie
klienta
Identyfikatory sesji po stronie serwera
przechowywane są w pamięci, pliku lub bazie
danych
Istnieją 3 sposoby na śledzenie sesji u klienta
1. Cookies
2. Ukryte pola formularza
3. Przepisywanie URL a
Przykład
Jak serwer śledzi sesję?
" Klient wysyła pierwsze żądanie.
" Serwer generuje identyfikator sesji
(PHPSESSID)
" Zapamiętanie id w bazie danych i np.
cookies
" Każde następne  podzapytanie musi
przesyłać ID (przez cookies lub URL)
" Serwer weryfikuje poprawność id
sesji


Wyszukiwarka

Podobne podstrony:
Apache Zabezpieczenia aplikacji i serwerów www
Modyfikacje Win Xp Jak Postawić Serwer Www
04 Zadanie serwer WWW
Definiowanie katalogów wirtualnych serwera WWW
02 Linux Konfiguracja serwera WWW APACHE
instalacja serwera www cwiczenia
Definiowanie wirtualnego serwera WWW dla potrzeb gazetki szkolnej
05 analiza stat www przeklej plidV37
Informatyka dla gimnazjum Zeszyt Ćwiczeń Serwer WWW wraz z bazą
jak uruchomić serwer WWW Apache w osobnym środowisku
P31 05 08 13[1]
13 F II wyklad 22 05 13
13 05 NO 3 4 juda
138 05 (13)

więcej podobnych podstron