17
Usluga WWW Usluga WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanislaw Polak Wyższa Szkola Zarządzania i Bankowości w Krakowie http://artemis.wszib.edu.pl/~polak/ Dr inż. Stanislaw Polak 1 Przedmiot: Internet i jego zastosowanie Materialy dla studentów Informatyki WSZiB w Krakowie Usluga WWW Plan prezentacji Poprawność serwisów WWW Protokól HTTP Serwer „Apache” CGI FastCGI Dr inż. Stanislaw Polak 2 Przedmiot: Internet i jego zastosowanie Usluga WWW Usluga „Gopher” Poprzednik uslugi WWW Rysunek: Charakterystyczne, hierarchiczne menu gophera I http://quux.org:70/ — strona gopher dostępna za pomocą uslugi WWW Dr inż. Stanislaw Polak 3 Przedmiot: Internet i jego zastosowanie Usluga WWW Usluga „Hyper-G” Następca uslugi WWW (a) Przykladowy dokument Hyper-G (b) Przyklad wyszukiwania w Hyper-G (c) Trójwymiarowa struktura kolekcji dokumentów Hyper-G Rysunek: Przeglądarka Harmony I http://www.hyperwave.com/ — strona komercyjnego następcy serwera „Hyper-G” Dr inż. Stanislaw Polak 4 Przedmiot: Internet i jego zastosowanie

Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

  • Upload
    lengoc

  • View
    229

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Usługa WWW

Usługa WWWPrzedmiot Internet i jego zastosowanie

Dr inż Stanisław Polak

Wyższa Szkoła Zarządzania i Bankowości w Krakowie

httpartemiswszibedupl~polak

Dr inż Stanisław Polak 1 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Usługa WWW

Plan prezentacji

Poprawność serwisoacutew WWW

Protokoacuteł HTTP

Serwer bdquoApacherdquo

CGI

FastCGI

Dr inż Stanisław Polak 2 Przedmiot Internet i jego zastosowanie

Usługa WWW

Usługa bdquoGopherrdquoPoprzednik usługi WWW

Rysunek Charakterystyczne hierarchiczne menu gophera

I httpquuxorg70mdash strona gopher dostępna za pomocą usługiWWW

Dr inż Stanisław Polak 3 Przedmiot Internet i jego zastosowanie

Usługa WWW

Usługa bdquoHyper-GrdquoNastępca usługi WWW

(a) Przykładowy dokumentHyper-G

(b) Przykład wyszukiwania wHyper-G

(c) Troacutejwymiarowa strukturakolekcji dokumentoacutew Hyper-G

Rysunek Przeglądarka Harmony

I httpwwwhyperwavecommdash strona komercyjnego następcy serwerabdquoHyper-Grdquo

Dr inż Stanisław Polak 4 Przedmiot Internet i jego zastosowanie

Poprawność serwisoacutew WWW Usługa WWW

Ogoacutelne zasady tworzenia poprawnych stron WWW

I Formatowanie 6isin informacjaI Najprostsze środki

I HTML + CSSI HTML + CSS + JavaScript

1 lt DOCTYPE htmlgt2 lthtml lang=plgt3 ltheadgt4 ltmeta charset=utf -8gt5 lttitlegtWitaj Świecielttitlegt6 ltlink rel=stylesheet href=maincssgt7 ltheadgt8 ltbodygt9 ltmaingt

10 lth1gtWitaj Świecielth1gt11 ltspan class=namegtSPltspangt tutaj by ł 12 lt maingt13 ltf o o t e rgtStanis ł aw Polaklt f o o t e rgt14 ltbodygt15 lthtmlgt

HTML

1 main footer 2 display block 3 background gray 4 padding 10px 5 margin 1px 6 7 name fontminusfamily arial verdana sansminusserif

maincss

Dr inż Stanisław Polak 5 Przedmiot Internet i jego zastosowanie

Poprawność serwisoacutew WWW Usługa WWW

Funkcjonalność stron

Test KrugaI Co to jest za witryna mdash

identyfikator witryny nazwa logoslogan

I Na jakiej jestem podstronie mdashnazwa podstrony

I Jakie są głoacutewne kategorie mdashnawigacja globalna

I Jakie mam opcje do wyboru natym poziomie struktury mdashnawigacja lokalna

I Gdzie znajduję się w odniesieniudo całej struktury mdash bdquoTu jesteśrdquościeżka dostępu

I W jaki sposoacuteb mogę czegośposzukać mdash Wyszukiwarka

Dr inż Stanisław Polak 6 Przedmiot Internet i jego zastosowanie

Poprawność serwisoacutew WWW Usługa WWW

Poprawność stron WWW

TestowanieI PrzeglądarkiI OgraniczeniaI httpvalidatorw3org

Dr inż Stanisław Polak 7 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Model usługi WWW

Serwer WWW

Adres IP

ProtokoacutełPort

Przeglądarka WWW

Dr inż Stanisław Polak 8 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Żądanie klienta

Serwer WWW

80

Przeglądarka WWW

1 GET dokument html HTTP 1 12 Host www icsr agh edu pl3 AcceptminusLanguage pl q=10 en q=054 Accept texthtml q=10 textlowast q=08 image g i f q=06 image j p eg q=06 lowastlowast q

=015 AcceptminusEncoding bzip2 q=1 gzip q=08 zip q=056 AcceptminusCharset utfminus8q=10 isominus8859minus2q=087 UserminusAgent Mozilla 8

Adres strony httpwwwicsraghedupldokumenthtml

Dr inż Stanisław Polak 9 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Odpowiedź serwera

Serwer WWW

80

Przeglądarka WWW

1 HTTP 1 1 200 OK2 Date Thu 20 Dec 2001 1 2 0 4 3 0 GMT3 Serwer Apache 2 2 84 LastminusModified Thu 20 Dec 2001 0 0 0 4 3 0 GMT5 Etag 12345 -678 -900ab6 CacheminusControl maxminusage=6048007 Expires Fri 21 Dec 2001 0 0 0 0 0 0 GMT8 Contentminustype texthtml charset=utfminus89 Contentminuslength

1011 lthtmlgt12 13 lthtmlgt

Dr inż Stanisław Polak 10 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Protokoacuteł HTTP Usługa WWW

Komendy protokołu HTTP

I GETI HEADI POSTI OPTIONSI TRACEI DELETEI PUTI CONNECT

1 GET index html HTTP 1 0

Żądanie

1 HTTP 1 1 200 OK2 Date Mon 09 Aug 2002 1 7 0 2 0 8 GMT3 Server Apache 2 0 3 3 ( UNIX )4 ContentminusLength 17765 ContentminusType texthtml charset=ISOminus8859minus167 lt DOCTYPE HTML PUBLIC -IETFDTD HTML 20ENgt8 lthtmlgt9

10 lthtmlgt

Odpowiedź

Dr inż Stanisław Polak 11 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Protokoacuteł HTTP2Najważniejsze nowości

I Jedno połączenieI MultipleksacjaI Powiadomienia bdquoPushrdquoI PriorytetyzacjaI BinarnośćI Kompresja nagłoacutewkoacutew

Źroacutedło httpsblogcloudflarecomintroducing-http2

Dr inż Stanisław Polak 12 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Moduły

Repozytorium modułoacutew dla ApachersquoaI httpmodulesapacheorg

I Zawiera ponad 500 modułoacutew

Statyczne

MPM So CGI SSL Rdzeń serwera

httpd

Dynamiczne

So

Rdzeń serwera

httpd

LoadModule cgi module modulesmod cgiso

LoadModule ssl module modulesmod sslso

Moduły

MPM CGI SSL

Moduły dynamicznie ładowane (DSO)

Dr inż Stanisław Polak 13 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Wyboacuter modułu MPM

I UNIXI preforkI workerI event

I WindowsI mpm winnt

I OS2I mpmt os2

I NetwareI mpm netware

I BeOSI beos

Dr inż Stanisław Polak 14 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Ważniejsze katalogi i pliki serwera WWW

I binI apachectl (start stop restart graceful graceful-stop)I abI apxsI htpasswd

I logsI access logI error log

I confI cgi-binI htdocs

Dr inż Stanisław Polak 15 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Konfigurowanie serwera

Pliki konfiguracyjneI confhttpdconfI confextrahttpd-conf

Ważniejsze parametry

1 ServerRoot usrlocalapache22 DocumentRoot usrlocalapache2htdocs3 UserDir public_html4 UserDir disabled root5 Listen 806 User apache7 Group apache8 DirectoryIndex index html index html var index shtml index cgi index php

Dr inż Stanisław Polak 16 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie dostępem do zasoboacutew WWWModuły

1 Kontrola dostępuI mod authz host

2 UwierzytelnianieI Typ uwierzytelniania

I mod auth basicI mod auth digest

I Dostawca uwierzytelnianaI mod authn anonI mod authn dbdI mod authn dbmI mod authn fileI mod authnz ldapI

3 AutoryzacjaI mod authnz ldapI mod authz dbdI mod authz dbmI mod authz groupfileI mod authz ownerI mod authz user

Dr inż Stanisław Polak 17 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Kontrola dostępuPrzykłady

1 ltLocation gt2 Require host luke icsr agh edu pl3 ltLocationgt

1 ltLocation gt2 ltRequireAllgt3 Require all granted4 Require not ip 1 9 2 1 6 8 1 15 ltRequireAllgt6 ltLocationgt

1 ltLocation http11onlygt2 ltIf SERVER_PROTOCOL == rsquoHTTP 10rsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 18 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie i autoryzacja użytkownikaPrzykład bdquostrona httpwwwprzykladpl~polaktajny na hasłordquo

1 ltDirectory homelowast pub l i c h tm lgt2 3 AllowOverride AuthConfig4 5 ltD i r e c t o r ygt

confextrahttpd-userdirconf

Zmiana lub ustawienie hasła binhtpasswd

1 AuthType Basic2 AuthName Strona na haslo3 AuthBasicProvider file4 AuthUserFile homepolakpublic_htmltajny htpasswd5 Require user polak6 R e q u i r e v a l i dminusu s e r

˜polakpublic htmltajnyhtaccess

Dr inż Stanisław Polak 19 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie łączonePrzykład

1 ltLocation registeredminususersminusonlygt2 AuthType Basic3 AuthName Strona na hasło4 AuthBasicProvider file5 AuthUserFile usrlocalapache2passwdpasswords6 ltRequireAllgt7 Require user polak8 Require ip 1 9 2 1 6 8 1 1 1 9 2 1 6 8 1 29 ltRequireAllgt

10 ltLocationgt

Dr inż Stanisław Polak 20 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Uzgadnianie zawartości

I MultiViewsI Options +MultiViewsI Options All +MultiViews

I Mapa typoacutew mdash pliki var

1 URI document html en2 Content-Type texthtml qs=1 level=23 Content-Language en4 5 Description Strona po angielsku67 URI document html pl8 Content-Type texthtml qs=019 Content-Language pl

10 11 Description Strona po polsku

Przykładowy plik z mapą typoacutew

Dr inż Stanisław Polak 21 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Server Side Includes (SSI)

1 ltminusminuspolecenie atrybut=warto ś ć atrybut=warto ś ć minusminusgt

Składnia dyrektywy SSI

1 2 Options +Includes3 Opt ions +IncludesNOEXEC4 5 AddType texthtml shtml6 AddOutputFilter INCLUDES shtml7 XBitHack on Po wykonaniu chmod +x dokumenthtml dokumenty HTML staną si ę

dokumentami SSI

Plik rsquoconfhttpdconfrsquo lub rsquohtaccessrsquo

Dr inż Stanisław Polak 22 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest ltminusminusecho var=DATE_LOCAL

minusminusgt7 ltbodygt8 lthtmlgt

Wejściowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest 30minus10minus017 ltbodygt8 lthtmlgt

Wyjściowy dokument HTML

Dr inż Stanisław Polak 23 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe zmienne SSI

I DOCUMENT NAMEI DATE LOCALI LAST MODIFIED

Dr inż Stanisław Polak 24 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Polecenia SSI

I configI echoI includeI execI fsizeI flastmodI setI printenvI if elif else endif

Dr inż Stanisław Polak 25 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie robotami

1 Plik robotstxtI User-AgentI Disallow

2 HTMLI META

rsquoRobotsrsquo

3 Kontrola dostępu

1 Userminusagent lowast2 Disallow

1 lthtmlgt2 ltheadgt3 lttitlegt lttitlegt4 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt5 ltminusminus6 ltMETA NAME=ROBOTS CONTENT=NOINDEX FOLLOWgt7 ltMETA NAME=ROBOTS CONTENT=INDEX NOFOLLOWgt8 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt9 minusminusgt

10 ltheadgt11

1 ltLocation notminusindexablegt2 ltIf tolower ( HTTP_USER_AGENT ) =~ robot ||

REMOTE_HOST == rsquobadrobotcomrsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 26 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Informacje dla robotoacutew

1 ltmeta name=Autor content=Stanisław Polakgt2 ltmeta name=Description content=Strona domowa Stanisława Polakagt3 ltmeta name=Keywords content=XML Java PHP ontologiagt

Dr inż Stanisław Polak 27 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

SSL a serwer Apache

I SSL mdash protokoacuteł zaszyfrowanej komunikacjiI Szyfrowanie z kluczem publicznymI Szyfrowanie przesyłanych informacjiI Uwierzytelnianie serwera

Dr inż Stanisław Polak 28 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Podstawowa konfiguracja protokołu SSL

I configure ndashenable-ssl

1 Listen 4432 SSLEngine on3 SSLCertificateKeyFile usrlocalapache2confserver key4 SSLCertificateFile usrlocalapache2confserver crt5 6 ltDirectory usrlocalapache2htdocsbezpiecznygt7 SSLRequireSSL8 ltDirectorygt

confextrahttpd-sslconf

Dr inż Stanisław Polak 29 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Instalacja klucza prywatnego oraz tymczasowego certyfikatu

1 utwoacuterz zaszyfrowany w standardzie DES3 klucz prywatny2 openssl genrsa -des3 1024 gt usrlocalapache2confserverkey3 utwoacuterz niezaszyfrowany klucz prywatny4 openssl genrsa 1024 gt usrlocalapache2confserverkey5 chmod 400 usrlocalapache2confserverkey6 utwoacuterz ż ądanie po ś wiadczonego certyfikatu7 openssl req -new -key usrlocalapache2confserverkey -out tmpservercsr8 9 Country Name (2 letter code ) [ AU ] PL

10 State or Province Name ( full name ) [ SomeminusState ] malopolskie11 Locality Name ( eg city ) [ ] Krakow12 Organization Name ( eg company ) [ Internet Widgits Pty Ltd ] Akademia Gorniczo-Hutnicza13 Organizational Unit Name ( eg section ) [ ] EAIiE Katedra Informatyki14 Common Name ( eg YOUR name ) [ ] wwwicsraghedupl15 Email Address [ ] webmastericsraghedupl16 1718 utwoacuterz tymczasowy certyfikat podpisuj ąc go przez samego siebie19 openssl req -x509 -key usrlocalapache2confserverkey -in tmpservercsr -out usrlocalapache2confservercrt -days 36520 rm tmpserver csr

1 openssl s_client minusconnect localhost 4 4 3 minusstate2 GET HTTP 1 03 ltklawisz Entergt4 ltklawisz Entergt

Testowanie połączenia

Dr inż Stanisław Polak 30 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Bezpieczeństwo serwera WWWI Uprawnienia użytkownikaI Prawa dostępu do plikoacutewI Dostęp do katalogoacutew nadrzędnychI Skrypty CGII DziennikiI Identyfikacja serweraI Firewall aplikacyjny bdquoModSecurityrdquo mdash moduł

bdquomod security2rdquoI Przykład metody włamaniahttp[target]indexphpmosConfig_absolute_path=http[attacker]cmdphp

I Strona głoacutewna mdashhttpwwwmodsecurityorg

I RegułyI httpwwwmodsecurityorgprojectscommercialrulesmdash komercyjne firmybdquoTrustwave SpiderLabs

I httpwwwatomicorpcomchannelsasl-20rulesmdash komercyjne firmybdquoAtomicorprdquo

I httpsgithubcomSpiderLabsowasp-modsecurity-crsmdash darmowe

I httpupdatesatomicorpcomchannelsrulesdelayedmdash darmowe

I Graficzny edytor reguł mdashhttpremonetneacom

1 chown minusR root usrlocalapache2

2 chmod minusR u+w usrlocalapache2

3 chmod gominusrx usrlocalapache2logs

4 chmod gominusrx usrlocalapache2conf

1 ltDirectory gt2 Options FollowSymLinks3 AllowOverride None4 Require all denied5 ltDirectorygt

confhttpdconf

1 ltDirectory homelowastpub l i c h tm lgt

2 Opt ions ExecCGI3 4 ltD i r e c t o r ygt

1 ServerTokens Prod2 ServerSignature Off

confextrahttpd-defaultconfDr inż Stanisław Polak 31 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Firewall aplikacyjny bdquoModSecurityrdquoFazy przetwarzania

Dr inż Stanisław Polak 32 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe reguły

1 Refuse to accep t POST r e q u e s t s t ha t do2 not s p e c i f y r e q u e s t body l e n g t h Do note tha t3 t h i s r u l e shou l d be p receeded by a r u l e t ha t v e r i f i e s4 on l y v a l i d r e q u e s t methods ( e g GET HEAD and POST) a r e used 56 Sk ł adn i a S e cDe f au l tAc t i on akc ja1 akc ja2 akc j a37 SecDefaultAction phase2deny89 Sk ł adn i a SecRule ZMIENNE OPERATOR [AKCJE ]

10 SecRule REQUEST_METHOD ˆPOST$ chain t none11 SecRule REQUEST_HEADERS ContentminusLength ˆ$ t none

Dr inż Stanisław Polak 33 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

CGIOgoacutelny schemat działania

Serwer WWW

Proces

80 443 Przeglądarka WWWGET POST

formularzhtml

Dr inż Stanisław Polak 34 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Co to jest CGI

I CGI (ang Common Gateway Interface) mdash Wspoacutelny interfejs bramyI Interfejs do serwera WWWI Program larrrarr serwer WWW

Dr inż Stanisław Polak 35 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Strategie tworzenia stron dynamicznych

Program generujący dokument HTMLI PerlI RubyI CI C++I

1 2 cout ltlt lth1 gtUżytkownik ltlt login ltlt lth1gt ltlt

endl 3 if ( prawid ł owy ( login ) ampamp prawid ł owe ( has ł o ) )4 cout ltlt Witamyltlt endl 5 else6 cout ltlt Nieprawidłowy login lub hasło ltlt

endl

CGI

Dokument HTML zawierający programI PHPI JSP (Java)I ASP (VBScript C )I

1 lth1gtU ż ytkownik ltphp echo $login gtlth1gt2 ltphp3 4 if ( prawid ł owy ( $login ) ampamp prawid ł owe ( $has ł o ) )

gt5 Witamy6 ltphp else gt7 Nieprawid ł owy login lub has ł o8 ltphp gt

PHP

Dr inż Stanisław Polak 36 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 2: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Poprawność serwisoacutew WWW Usługa WWW

Ogoacutelne zasady tworzenia poprawnych stron WWW

I Formatowanie 6isin informacjaI Najprostsze środki

I HTML + CSSI HTML + CSS + JavaScript

1 lt DOCTYPE htmlgt2 lthtml lang=plgt3 ltheadgt4 ltmeta charset=utf -8gt5 lttitlegtWitaj Świecielttitlegt6 ltlink rel=stylesheet href=maincssgt7 ltheadgt8 ltbodygt9 ltmaingt

10 lth1gtWitaj Świecielth1gt11 ltspan class=namegtSPltspangt tutaj by ł 12 lt maingt13 ltf o o t e rgtStanis ł aw Polaklt f o o t e rgt14 ltbodygt15 lthtmlgt

HTML

1 main footer 2 display block 3 background gray 4 padding 10px 5 margin 1px 6 7 name fontminusfamily arial verdana sansminusserif

maincss

Dr inż Stanisław Polak 5 Przedmiot Internet i jego zastosowanie

Poprawność serwisoacutew WWW Usługa WWW

Funkcjonalność stron

Test KrugaI Co to jest za witryna mdash

identyfikator witryny nazwa logoslogan

I Na jakiej jestem podstronie mdashnazwa podstrony

I Jakie są głoacutewne kategorie mdashnawigacja globalna

I Jakie mam opcje do wyboru natym poziomie struktury mdashnawigacja lokalna

I Gdzie znajduję się w odniesieniudo całej struktury mdash bdquoTu jesteśrdquościeżka dostępu

I W jaki sposoacuteb mogę czegośposzukać mdash Wyszukiwarka

Dr inż Stanisław Polak 6 Przedmiot Internet i jego zastosowanie

Poprawność serwisoacutew WWW Usługa WWW

Poprawność stron WWW

TestowanieI PrzeglądarkiI OgraniczeniaI httpvalidatorw3org

Dr inż Stanisław Polak 7 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Model usługi WWW

Serwer WWW

Adres IP

ProtokoacutełPort

Przeglądarka WWW

Dr inż Stanisław Polak 8 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Żądanie klienta

Serwer WWW

80

Przeglądarka WWW

1 GET dokument html HTTP 1 12 Host www icsr agh edu pl3 AcceptminusLanguage pl q=10 en q=054 Accept texthtml q=10 textlowast q=08 image g i f q=06 image j p eg q=06 lowastlowast q

=015 AcceptminusEncoding bzip2 q=1 gzip q=08 zip q=056 AcceptminusCharset utfminus8q=10 isominus8859minus2q=087 UserminusAgent Mozilla 8

Adres strony httpwwwicsraghedupldokumenthtml

Dr inż Stanisław Polak 9 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Odpowiedź serwera

Serwer WWW

80

Przeglądarka WWW

1 HTTP 1 1 200 OK2 Date Thu 20 Dec 2001 1 2 0 4 3 0 GMT3 Serwer Apache 2 2 84 LastminusModified Thu 20 Dec 2001 0 0 0 4 3 0 GMT5 Etag 12345 -678 -900ab6 CacheminusControl maxminusage=6048007 Expires Fri 21 Dec 2001 0 0 0 0 0 0 GMT8 Contentminustype texthtml charset=utfminus89 Contentminuslength

1011 lthtmlgt12 13 lthtmlgt

Dr inż Stanisław Polak 10 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Protokoacuteł HTTP Usługa WWW

Komendy protokołu HTTP

I GETI HEADI POSTI OPTIONSI TRACEI DELETEI PUTI CONNECT

1 GET index html HTTP 1 0

Żądanie

1 HTTP 1 1 200 OK2 Date Mon 09 Aug 2002 1 7 0 2 0 8 GMT3 Server Apache 2 0 3 3 ( UNIX )4 ContentminusLength 17765 ContentminusType texthtml charset=ISOminus8859minus167 lt DOCTYPE HTML PUBLIC -IETFDTD HTML 20ENgt8 lthtmlgt9

10 lthtmlgt

Odpowiedź

Dr inż Stanisław Polak 11 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Protokoacuteł HTTP2Najważniejsze nowości

I Jedno połączenieI MultipleksacjaI Powiadomienia bdquoPushrdquoI PriorytetyzacjaI BinarnośćI Kompresja nagłoacutewkoacutew

Źroacutedło httpsblogcloudflarecomintroducing-http2

Dr inż Stanisław Polak 12 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Moduły

Repozytorium modułoacutew dla ApachersquoaI httpmodulesapacheorg

I Zawiera ponad 500 modułoacutew

Statyczne

MPM So CGI SSL Rdzeń serwera

httpd

Dynamiczne

So

Rdzeń serwera

httpd

LoadModule cgi module modulesmod cgiso

LoadModule ssl module modulesmod sslso

Moduły

MPM CGI SSL

Moduły dynamicznie ładowane (DSO)

Dr inż Stanisław Polak 13 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Wyboacuter modułu MPM

I UNIXI preforkI workerI event

I WindowsI mpm winnt

I OS2I mpmt os2

I NetwareI mpm netware

I BeOSI beos

Dr inż Stanisław Polak 14 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Ważniejsze katalogi i pliki serwera WWW

I binI apachectl (start stop restart graceful graceful-stop)I abI apxsI htpasswd

I logsI access logI error log

I confI cgi-binI htdocs

Dr inż Stanisław Polak 15 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Konfigurowanie serwera

Pliki konfiguracyjneI confhttpdconfI confextrahttpd-conf

Ważniejsze parametry

1 ServerRoot usrlocalapache22 DocumentRoot usrlocalapache2htdocs3 UserDir public_html4 UserDir disabled root5 Listen 806 User apache7 Group apache8 DirectoryIndex index html index html var index shtml index cgi index php

Dr inż Stanisław Polak 16 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie dostępem do zasoboacutew WWWModuły

1 Kontrola dostępuI mod authz host

2 UwierzytelnianieI Typ uwierzytelniania

I mod auth basicI mod auth digest

I Dostawca uwierzytelnianaI mod authn anonI mod authn dbdI mod authn dbmI mod authn fileI mod authnz ldapI

3 AutoryzacjaI mod authnz ldapI mod authz dbdI mod authz dbmI mod authz groupfileI mod authz ownerI mod authz user

Dr inż Stanisław Polak 17 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Kontrola dostępuPrzykłady

1 ltLocation gt2 Require host luke icsr agh edu pl3 ltLocationgt

1 ltLocation gt2 ltRequireAllgt3 Require all granted4 Require not ip 1 9 2 1 6 8 1 15 ltRequireAllgt6 ltLocationgt

1 ltLocation http11onlygt2 ltIf SERVER_PROTOCOL == rsquoHTTP 10rsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 18 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie i autoryzacja użytkownikaPrzykład bdquostrona httpwwwprzykladpl~polaktajny na hasłordquo

1 ltDirectory homelowast pub l i c h tm lgt2 3 AllowOverride AuthConfig4 5 ltD i r e c t o r ygt

confextrahttpd-userdirconf

Zmiana lub ustawienie hasła binhtpasswd

1 AuthType Basic2 AuthName Strona na haslo3 AuthBasicProvider file4 AuthUserFile homepolakpublic_htmltajny htpasswd5 Require user polak6 R e q u i r e v a l i dminusu s e r

˜polakpublic htmltajnyhtaccess

Dr inż Stanisław Polak 19 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie łączonePrzykład

1 ltLocation registeredminususersminusonlygt2 AuthType Basic3 AuthName Strona na hasło4 AuthBasicProvider file5 AuthUserFile usrlocalapache2passwdpasswords6 ltRequireAllgt7 Require user polak8 Require ip 1 9 2 1 6 8 1 1 1 9 2 1 6 8 1 29 ltRequireAllgt

10 ltLocationgt

Dr inż Stanisław Polak 20 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Uzgadnianie zawartości

I MultiViewsI Options +MultiViewsI Options All +MultiViews

I Mapa typoacutew mdash pliki var

1 URI document html en2 Content-Type texthtml qs=1 level=23 Content-Language en4 5 Description Strona po angielsku67 URI document html pl8 Content-Type texthtml qs=019 Content-Language pl

10 11 Description Strona po polsku

Przykładowy plik z mapą typoacutew

Dr inż Stanisław Polak 21 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Server Side Includes (SSI)

1 ltminusminuspolecenie atrybut=warto ś ć atrybut=warto ś ć minusminusgt

Składnia dyrektywy SSI

1 2 Options +Includes3 Opt ions +IncludesNOEXEC4 5 AddType texthtml shtml6 AddOutputFilter INCLUDES shtml7 XBitHack on Po wykonaniu chmod +x dokumenthtml dokumenty HTML staną si ę

dokumentami SSI

Plik rsquoconfhttpdconfrsquo lub rsquohtaccessrsquo

Dr inż Stanisław Polak 22 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest ltminusminusecho var=DATE_LOCAL

minusminusgt7 ltbodygt8 lthtmlgt

Wejściowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest 30minus10minus017 ltbodygt8 lthtmlgt

Wyjściowy dokument HTML

Dr inż Stanisław Polak 23 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe zmienne SSI

I DOCUMENT NAMEI DATE LOCALI LAST MODIFIED

Dr inż Stanisław Polak 24 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Polecenia SSI

I configI echoI includeI execI fsizeI flastmodI setI printenvI if elif else endif

Dr inż Stanisław Polak 25 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie robotami

1 Plik robotstxtI User-AgentI Disallow

2 HTMLI META

rsquoRobotsrsquo

3 Kontrola dostępu

1 Userminusagent lowast2 Disallow

1 lthtmlgt2 ltheadgt3 lttitlegt lttitlegt4 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt5 ltminusminus6 ltMETA NAME=ROBOTS CONTENT=NOINDEX FOLLOWgt7 ltMETA NAME=ROBOTS CONTENT=INDEX NOFOLLOWgt8 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt9 minusminusgt

10 ltheadgt11

1 ltLocation notminusindexablegt2 ltIf tolower ( HTTP_USER_AGENT ) =~ robot ||

REMOTE_HOST == rsquobadrobotcomrsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 26 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Informacje dla robotoacutew

1 ltmeta name=Autor content=Stanisław Polakgt2 ltmeta name=Description content=Strona domowa Stanisława Polakagt3 ltmeta name=Keywords content=XML Java PHP ontologiagt

Dr inż Stanisław Polak 27 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

SSL a serwer Apache

I SSL mdash protokoacuteł zaszyfrowanej komunikacjiI Szyfrowanie z kluczem publicznymI Szyfrowanie przesyłanych informacjiI Uwierzytelnianie serwera

Dr inż Stanisław Polak 28 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Podstawowa konfiguracja protokołu SSL

I configure ndashenable-ssl

1 Listen 4432 SSLEngine on3 SSLCertificateKeyFile usrlocalapache2confserver key4 SSLCertificateFile usrlocalapache2confserver crt5 6 ltDirectory usrlocalapache2htdocsbezpiecznygt7 SSLRequireSSL8 ltDirectorygt

confextrahttpd-sslconf

Dr inż Stanisław Polak 29 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Instalacja klucza prywatnego oraz tymczasowego certyfikatu

1 utwoacuterz zaszyfrowany w standardzie DES3 klucz prywatny2 openssl genrsa -des3 1024 gt usrlocalapache2confserverkey3 utwoacuterz niezaszyfrowany klucz prywatny4 openssl genrsa 1024 gt usrlocalapache2confserverkey5 chmod 400 usrlocalapache2confserverkey6 utwoacuterz ż ądanie po ś wiadczonego certyfikatu7 openssl req -new -key usrlocalapache2confserverkey -out tmpservercsr8 9 Country Name (2 letter code ) [ AU ] PL

10 State or Province Name ( full name ) [ SomeminusState ] malopolskie11 Locality Name ( eg city ) [ ] Krakow12 Organization Name ( eg company ) [ Internet Widgits Pty Ltd ] Akademia Gorniczo-Hutnicza13 Organizational Unit Name ( eg section ) [ ] EAIiE Katedra Informatyki14 Common Name ( eg YOUR name ) [ ] wwwicsraghedupl15 Email Address [ ] webmastericsraghedupl16 1718 utwoacuterz tymczasowy certyfikat podpisuj ąc go przez samego siebie19 openssl req -x509 -key usrlocalapache2confserverkey -in tmpservercsr -out usrlocalapache2confservercrt -days 36520 rm tmpserver csr

1 openssl s_client minusconnect localhost 4 4 3 minusstate2 GET HTTP 1 03 ltklawisz Entergt4 ltklawisz Entergt

Testowanie połączenia

Dr inż Stanisław Polak 30 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Bezpieczeństwo serwera WWWI Uprawnienia użytkownikaI Prawa dostępu do plikoacutewI Dostęp do katalogoacutew nadrzędnychI Skrypty CGII DziennikiI Identyfikacja serweraI Firewall aplikacyjny bdquoModSecurityrdquo mdash moduł

bdquomod security2rdquoI Przykład metody włamaniahttp[target]indexphpmosConfig_absolute_path=http[attacker]cmdphp

I Strona głoacutewna mdashhttpwwwmodsecurityorg

I RegułyI httpwwwmodsecurityorgprojectscommercialrulesmdash komercyjne firmybdquoTrustwave SpiderLabs

I httpwwwatomicorpcomchannelsasl-20rulesmdash komercyjne firmybdquoAtomicorprdquo

I httpsgithubcomSpiderLabsowasp-modsecurity-crsmdash darmowe

I httpupdatesatomicorpcomchannelsrulesdelayedmdash darmowe

I Graficzny edytor reguł mdashhttpremonetneacom

1 chown minusR root usrlocalapache2

2 chmod minusR u+w usrlocalapache2

3 chmod gominusrx usrlocalapache2logs

4 chmod gominusrx usrlocalapache2conf

1 ltDirectory gt2 Options FollowSymLinks3 AllowOverride None4 Require all denied5 ltDirectorygt

confhttpdconf

1 ltDirectory homelowastpub l i c h tm lgt

2 Opt ions ExecCGI3 4 ltD i r e c t o r ygt

1 ServerTokens Prod2 ServerSignature Off

confextrahttpd-defaultconfDr inż Stanisław Polak 31 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Firewall aplikacyjny bdquoModSecurityrdquoFazy przetwarzania

Dr inż Stanisław Polak 32 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe reguły

1 Refuse to accep t POST r e q u e s t s t ha t do2 not s p e c i f y r e q u e s t body l e n g t h Do note tha t3 t h i s r u l e shou l d be p receeded by a r u l e t ha t v e r i f i e s4 on l y v a l i d r e q u e s t methods ( e g GET HEAD and POST) a r e used 56 Sk ł adn i a S e cDe f au l tAc t i on akc ja1 akc ja2 akc j a37 SecDefaultAction phase2deny89 Sk ł adn i a SecRule ZMIENNE OPERATOR [AKCJE ]

10 SecRule REQUEST_METHOD ˆPOST$ chain t none11 SecRule REQUEST_HEADERS ContentminusLength ˆ$ t none

Dr inż Stanisław Polak 33 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

CGIOgoacutelny schemat działania

Serwer WWW

Proces

80 443 Przeglądarka WWWGET POST

formularzhtml

Dr inż Stanisław Polak 34 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Co to jest CGI

I CGI (ang Common Gateway Interface) mdash Wspoacutelny interfejs bramyI Interfejs do serwera WWWI Program larrrarr serwer WWW

Dr inż Stanisław Polak 35 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Strategie tworzenia stron dynamicznych

Program generujący dokument HTMLI PerlI RubyI CI C++I

1 2 cout ltlt lth1 gtUżytkownik ltlt login ltlt lth1gt ltlt

endl 3 if ( prawid ł owy ( login ) ampamp prawid ł owe ( has ł o ) )4 cout ltlt Witamyltlt endl 5 else6 cout ltlt Nieprawidłowy login lub hasło ltlt

endl

CGI

Dokument HTML zawierający programI PHPI JSP (Java)I ASP (VBScript C )I

1 lth1gtU ż ytkownik ltphp echo $login gtlth1gt2 ltphp3 4 if ( prawid ł owy ( $login ) ampamp prawid ł owe ( $has ł o ) )

gt5 Witamy6 ltphp else gt7 Nieprawid ł owy login lub has ł o8 ltphp gt

PHP

Dr inż Stanisław Polak 36 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 3: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Protokoacuteł HTTP Usługa WWW

Żądanie klienta

Serwer WWW

80

Przeglądarka WWW

1 GET dokument html HTTP 1 12 Host www icsr agh edu pl3 AcceptminusLanguage pl q=10 en q=054 Accept texthtml q=10 textlowast q=08 image g i f q=06 image j p eg q=06 lowastlowast q

=015 AcceptminusEncoding bzip2 q=1 gzip q=08 zip q=056 AcceptminusCharset utfminus8q=10 isominus8859minus2q=087 UserminusAgent Mozilla 8

Adres strony httpwwwicsraghedupldokumenthtml

Dr inż Stanisław Polak 9 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Odpowiedź serwera

Serwer WWW

80

Przeglądarka WWW

1 HTTP 1 1 200 OK2 Date Thu 20 Dec 2001 1 2 0 4 3 0 GMT3 Serwer Apache 2 2 84 LastminusModified Thu 20 Dec 2001 0 0 0 4 3 0 GMT5 Etag 12345 -678 -900ab6 CacheminusControl maxminusage=6048007 Expires Fri 21 Dec 2001 0 0 0 0 0 0 GMT8 Contentminustype texthtml charset=utfminus89 Contentminuslength

1011 lthtmlgt12 13 lthtmlgt

Dr inż Stanisław Polak 10 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Protokoacuteł HTTP Usługa WWW

Komendy protokołu HTTP

I GETI HEADI POSTI OPTIONSI TRACEI DELETEI PUTI CONNECT

1 GET index html HTTP 1 0

Żądanie

1 HTTP 1 1 200 OK2 Date Mon 09 Aug 2002 1 7 0 2 0 8 GMT3 Server Apache 2 0 3 3 ( UNIX )4 ContentminusLength 17765 ContentminusType texthtml charset=ISOminus8859minus167 lt DOCTYPE HTML PUBLIC -IETFDTD HTML 20ENgt8 lthtmlgt9

10 lthtmlgt

Odpowiedź

Dr inż Stanisław Polak 11 Przedmiot Internet i jego zastosowanie

Protokoacuteł HTTP Usługa WWW

Protokoacuteł HTTP2Najważniejsze nowości

I Jedno połączenieI MultipleksacjaI Powiadomienia bdquoPushrdquoI PriorytetyzacjaI BinarnośćI Kompresja nagłoacutewkoacutew

Źroacutedło httpsblogcloudflarecomintroducing-http2

Dr inż Stanisław Polak 12 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Moduły

Repozytorium modułoacutew dla ApachersquoaI httpmodulesapacheorg

I Zawiera ponad 500 modułoacutew

Statyczne

MPM So CGI SSL Rdzeń serwera

httpd

Dynamiczne

So

Rdzeń serwera

httpd

LoadModule cgi module modulesmod cgiso

LoadModule ssl module modulesmod sslso

Moduły

MPM CGI SSL

Moduły dynamicznie ładowane (DSO)

Dr inż Stanisław Polak 13 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Wyboacuter modułu MPM

I UNIXI preforkI workerI event

I WindowsI mpm winnt

I OS2I mpmt os2

I NetwareI mpm netware

I BeOSI beos

Dr inż Stanisław Polak 14 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Ważniejsze katalogi i pliki serwera WWW

I binI apachectl (start stop restart graceful graceful-stop)I abI apxsI htpasswd

I logsI access logI error log

I confI cgi-binI htdocs

Dr inż Stanisław Polak 15 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Konfigurowanie serwera

Pliki konfiguracyjneI confhttpdconfI confextrahttpd-conf

Ważniejsze parametry

1 ServerRoot usrlocalapache22 DocumentRoot usrlocalapache2htdocs3 UserDir public_html4 UserDir disabled root5 Listen 806 User apache7 Group apache8 DirectoryIndex index html index html var index shtml index cgi index php

Dr inż Stanisław Polak 16 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie dostępem do zasoboacutew WWWModuły

1 Kontrola dostępuI mod authz host

2 UwierzytelnianieI Typ uwierzytelniania

I mod auth basicI mod auth digest

I Dostawca uwierzytelnianaI mod authn anonI mod authn dbdI mod authn dbmI mod authn fileI mod authnz ldapI

3 AutoryzacjaI mod authnz ldapI mod authz dbdI mod authz dbmI mod authz groupfileI mod authz ownerI mod authz user

Dr inż Stanisław Polak 17 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Kontrola dostępuPrzykłady

1 ltLocation gt2 Require host luke icsr agh edu pl3 ltLocationgt

1 ltLocation gt2 ltRequireAllgt3 Require all granted4 Require not ip 1 9 2 1 6 8 1 15 ltRequireAllgt6 ltLocationgt

1 ltLocation http11onlygt2 ltIf SERVER_PROTOCOL == rsquoHTTP 10rsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 18 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie i autoryzacja użytkownikaPrzykład bdquostrona httpwwwprzykladpl~polaktajny na hasłordquo

1 ltDirectory homelowast pub l i c h tm lgt2 3 AllowOverride AuthConfig4 5 ltD i r e c t o r ygt

confextrahttpd-userdirconf

Zmiana lub ustawienie hasła binhtpasswd

1 AuthType Basic2 AuthName Strona na haslo3 AuthBasicProvider file4 AuthUserFile homepolakpublic_htmltajny htpasswd5 Require user polak6 R e q u i r e v a l i dminusu s e r

˜polakpublic htmltajnyhtaccess

Dr inż Stanisław Polak 19 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie łączonePrzykład

1 ltLocation registeredminususersminusonlygt2 AuthType Basic3 AuthName Strona na hasło4 AuthBasicProvider file5 AuthUserFile usrlocalapache2passwdpasswords6 ltRequireAllgt7 Require user polak8 Require ip 1 9 2 1 6 8 1 1 1 9 2 1 6 8 1 29 ltRequireAllgt

10 ltLocationgt

Dr inż Stanisław Polak 20 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Uzgadnianie zawartości

I MultiViewsI Options +MultiViewsI Options All +MultiViews

I Mapa typoacutew mdash pliki var

1 URI document html en2 Content-Type texthtml qs=1 level=23 Content-Language en4 5 Description Strona po angielsku67 URI document html pl8 Content-Type texthtml qs=019 Content-Language pl

10 11 Description Strona po polsku

Przykładowy plik z mapą typoacutew

Dr inż Stanisław Polak 21 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Server Side Includes (SSI)

1 ltminusminuspolecenie atrybut=warto ś ć atrybut=warto ś ć minusminusgt

Składnia dyrektywy SSI

1 2 Options +Includes3 Opt ions +IncludesNOEXEC4 5 AddType texthtml shtml6 AddOutputFilter INCLUDES shtml7 XBitHack on Po wykonaniu chmod +x dokumenthtml dokumenty HTML staną si ę

dokumentami SSI

Plik rsquoconfhttpdconfrsquo lub rsquohtaccessrsquo

Dr inż Stanisław Polak 22 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest ltminusminusecho var=DATE_LOCAL

minusminusgt7 ltbodygt8 lthtmlgt

Wejściowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest 30minus10minus017 ltbodygt8 lthtmlgt

Wyjściowy dokument HTML

Dr inż Stanisław Polak 23 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe zmienne SSI

I DOCUMENT NAMEI DATE LOCALI LAST MODIFIED

Dr inż Stanisław Polak 24 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Polecenia SSI

I configI echoI includeI execI fsizeI flastmodI setI printenvI if elif else endif

Dr inż Stanisław Polak 25 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie robotami

1 Plik robotstxtI User-AgentI Disallow

2 HTMLI META

rsquoRobotsrsquo

3 Kontrola dostępu

1 Userminusagent lowast2 Disallow

1 lthtmlgt2 ltheadgt3 lttitlegt lttitlegt4 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt5 ltminusminus6 ltMETA NAME=ROBOTS CONTENT=NOINDEX FOLLOWgt7 ltMETA NAME=ROBOTS CONTENT=INDEX NOFOLLOWgt8 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt9 minusminusgt

10 ltheadgt11

1 ltLocation notminusindexablegt2 ltIf tolower ( HTTP_USER_AGENT ) =~ robot ||

REMOTE_HOST == rsquobadrobotcomrsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 26 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Informacje dla robotoacutew

1 ltmeta name=Autor content=Stanisław Polakgt2 ltmeta name=Description content=Strona domowa Stanisława Polakagt3 ltmeta name=Keywords content=XML Java PHP ontologiagt

Dr inż Stanisław Polak 27 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

SSL a serwer Apache

I SSL mdash protokoacuteł zaszyfrowanej komunikacjiI Szyfrowanie z kluczem publicznymI Szyfrowanie przesyłanych informacjiI Uwierzytelnianie serwera

Dr inż Stanisław Polak 28 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Podstawowa konfiguracja protokołu SSL

I configure ndashenable-ssl

1 Listen 4432 SSLEngine on3 SSLCertificateKeyFile usrlocalapache2confserver key4 SSLCertificateFile usrlocalapache2confserver crt5 6 ltDirectory usrlocalapache2htdocsbezpiecznygt7 SSLRequireSSL8 ltDirectorygt

confextrahttpd-sslconf

Dr inż Stanisław Polak 29 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Instalacja klucza prywatnego oraz tymczasowego certyfikatu

1 utwoacuterz zaszyfrowany w standardzie DES3 klucz prywatny2 openssl genrsa -des3 1024 gt usrlocalapache2confserverkey3 utwoacuterz niezaszyfrowany klucz prywatny4 openssl genrsa 1024 gt usrlocalapache2confserverkey5 chmod 400 usrlocalapache2confserverkey6 utwoacuterz ż ądanie po ś wiadczonego certyfikatu7 openssl req -new -key usrlocalapache2confserverkey -out tmpservercsr8 9 Country Name (2 letter code ) [ AU ] PL

10 State or Province Name ( full name ) [ SomeminusState ] malopolskie11 Locality Name ( eg city ) [ ] Krakow12 Organization Name ( eg company ) [ Internet Widgits Pty Ltd ] Akademia Gorniczo-Hutnicza13 Organizational Unit Name ( eg section ) [ ] EAIiE Katedra Informatyki14 Common Name ( eg YOUR name ) [ ] wwwicsraghedupl15 Email Address [ ] webmastericsraghedupl16 1718 utwoacuterz tymczasowy certyfikat podpisuj ąc go przez samego siebie19 openssl req -x509 -key usrlocalapache2confserverkey -in tmpservercsr -out usrlocalapache2confservercrt -days 36520 rm tmpserver csr

1 openssl s_client minusconnect localhost 4 4 3 minusstate2 GET HTTP 1 03 ltklawisz Entergt4 ltklawisz Entergt

Testowanie połączenia

Dr inż Stanisław Polak 30 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Bezpieczeństwo serwera WWWI Uprawnienia użytkownikaI Prawa dostępu do plikoacutewI Dostęp do katalogoacutew nadrzędnychI Skrypty CGII DziennikiI Identyfikacja serweraI Firewall aplikacyjny bdquoModSecurityrdquo mdash moduł

bdquomod security2rdquoI Przykład metody włamaniahttp[target]indexphpmosConfig_absolute_path=http[attacker]cmdphp

I Strona głoacutewna mdashhttpwwwmodsecurityorg

I RegułyI httpwwwmodsecurityorgprojectscommercialrulesmdash komercyjne firmybdquoTrustwave SpiderLabs

I httpwwwatomicorpcomchannelsasl-20rulesmdash komercyjne firmybdquoAtomicorprdquo

I httpsgithubcomSpiderLabsowasp-modsecurity-crsmdash darmowe

I httpupdatesatomicorpcomchannelsrulesdelayedmdash darmowe

I Graficzny edytor reguł mdashhttpremonetneacom

1 chown minusR root usrlocalapache2

2 chmod minusR u+w usrlocalapache2

3 chmod gominusrx usrlocalapache2logs

4 chmod gominusrx usrlocalapache2conf

1 ltDirectory gt2 Options FollowSymLinks3 AllowOverride None4 Require all denied5 ltDirectorygt

confhttpdconf

1 ltDirectory homelowastpub l i c h tm lgt

2 Opt ions ExecCGI3 4 ltD i r e c t o r ygt

1 ServerTokens Prod2 ServerSignature Off

confextrahttpd-defaultconfDr inż Stanisław Polak 31 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Firewall aplikacyjny bdquoModSecurityrdquoFazy przetwarzania

Dr inż Stanisław Polak 32 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe reguły

1 Refuse to accep t POST r e q u e s t s t ha t do2 not s p e c i f y r e q u e s t body l e n g t h Do note tha t3 t h i s r u l e shou l d be p receeded by a r u l e t ha t v e r i f i e s4 on l y v a l i d r e q u e s t methods ( e g GET HEAD and POST) a r e used 56 Sk ł adn i a S e cDe f au l tAc t i on akc ja1 akc ja2 akc j a37 SecDefaultAction phase2deny89 Sk ł adn i a SecRule ZMIENNE OPERATOR [AKCJE ]

10 SecRule REQUEST_METHOD ˆPOST$ chain t none11 SecRule REQUEST_HEADERS ContentminusLength ˆ$ t none

Dr inż Stanisław Polak 33 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

CGIOgoacutelny schemat działania

Serwer WWW

Proces

80 443 Przeglądarka WWWGET POST

formularzhtml

Dr inż Stanisław Polak 34 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Co to jest CGI

I CGI (ang Common Gateway Interface) mdash Wspoacutelny interfejs bramyI Interfejs do serwera WWWI Program larrrarr serwer WWW

Dr inż Stanisław Polak 35 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Strategie tworzenia stron dynamicznych

Program generujący dokument HTMLI PerlI RubyI CI C++I

1 2 cout ltlt lth1 gtUżytkownik ltlt login ltlt lth1gt ltlt

endl 3 if ( prawid ł owy ( login ) ampamp prawid ł owe ( has ł o ) )4 cout ltlt Witamyltlt endl 5 else6 cout ltlt Nieprawidłowy login lub hasło ltlt

endl

CGI

Dokument HTML zawierający programI PHPI JSP (Java)I ASP (VBScript C )I

1 lth1gtU ż ytkownik ltphp echo $login gtlth1gt2 ltphp3 4 if ( prawid ł owy ( $login ) ampamp prawid ł owe ( $has ł o ) )

gt5 Witamy6 ltphp else gt7 Nieprawid ł owy login lub has ł o8 ltphp gt

PHP

Dr inż Stanisław Polak 36 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 4: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Serwer bdquoApacherdquo Usługa WWW

Moduły

Repozytorium modułoacutew dla ApachersquoaI httpmodulesapacheorg

I Zawiera ponad 500 modułoacutew

Statyczne

MPM So CGI SSL Rdzeń serwera

httpd

Dynamiczne

So

Rdzeń serwera

httpd

LoadModule cgi module modulesmod cgiso

LoadModule ssl module modulesmod sslso

Moduły

MPM CGI SSL

Moduły dynamicznie ładowane (DSO)

Dr inż Stanisław Polak 13 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Wyboacuter modułu MPM

I UNIXI preforkI workerI event

I WindowsI mpm winnt

I OS2I mpmt os2

I NetwareI mpm netware

I BeOSI beos

Dr inż Stanisław Polak 14 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Ważniejsze katalogi i pliki serwera WWW

I binI apachectl (start stop restart graceful graceful-stop)I abI apxsI htpasswd

I logsI access logI error log

I confI cgi-binI htdocs

Dr inż Stanisław Polak 15 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Konfigurowanie serwera

Pliki konfiguracyjneI confhttpdconfI confextrahttpd-conf

Ważniejsze parametry

1 ServerRoot usrlocalapache22 DocumentRoot usrlocalapache2htdocs3 UserDir public_html4 UserDir disabled root5 Listen 806 User apache7 Group apache8 DirectoryIndex index html index html var index shtml index cgi index php

Dr inż Stanisław Polak 16 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie dostępem do zasoboacutew WWWModuły

1 Kontrola dostępuI mod authz host

2 UwierzytelnianieI Typ uwierzytelniania

I mod auth basicI mod auth digest

I Dostawca uwierzytelnianaI mod authn anonI mod authn dbdI mod authn dbmI mod authn fileI mod authnz ldapI

3 AutoryzacjaI mod authnz ldapI mod authz dbdI mod authz dbmI mod authz groupfileI mod authz ownerI mod authz user

Dr inż Stanisław Polak 17 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Kontrola dostępuPrzykłady

1 ltLocation gt2 Require host luke icsr agh edu pl3 ltLocationgt

1 ltLocation gt2 ltRequireAllgt3 Require all granted4 Require not ip 1 9 2 1 6 8 1 15 ltRequireAllgt6 ltLocationgt

1 ltLocation http11onlygt2 ltIf SERVER_PROTOCOL == rsquoHTTP 10rsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 18 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie i autoryzacja użytkownikaPrzykład bdquostrona httpwwwprzykladpl~polaktajny na hasłordquo

1 ltDirectory homelowast pub l i c h tm lgt2 3 AllowOverride AuthConfig4 5 ltD i r e c t o r ygt

confextrahttpd-userdirconf

Zmiana lub ustawienie hasła binhtpasswd

1 AuthType Basic2 AuthName Strona na haslo3 AuthBasicProvider file4 AuthUserFile homepolakpublic_htmltajny htpasswd5 Require user polak6 R e q u i r e v a l i dminusu s e r

˜polakpublic htmltajnyhtaccess

Dr inż Stanisław Polak 19 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie łączonePrzykład

1 ltLocation registeredminususersminusonlygt2 AuthType Basic3 AuthName Strona na hasło4 AuthBasicProvider file5 AuthUserFile usrlocalapache2passwdpasswords6 ltRequireAllgt7 Require user polak8 Require ip 1 9 2 1 6 8 1 1 1 9 2 1 6 8 1 29 ltRequireAllgt

10 ltLocationgt

Dr inż Stanisław Polak 20 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Uzgadnianie zawartości

I MultiViewsI Options +MultiViewsI Options All +MultiViews

I Mapa typoacutew mdash pliki var

1 URI document html en2 Content-Type texthtml qs=1 level=23 Content-Language en4 5 Description Strona po angielsku67 URI document html pl8 Content-Type texthtml qs=019 Content-Language pl

10 11 Description Strona po polsku

Przykładowy plik z mapą typoacutew

Dr inż Stanisław Polak 21 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Server Side Includes (SSI)

1 ltminusminuspolecenie atrybut=warto ś ć atrybut=warto ś ć minusminusgt

Składnia dyrektywy SSI

1 2 Options +Includes3 Opt ions +IncludesNOEXEC4 5 AddType texthtml shtml6 AddOutputFilter INCLUDES shtml7 XBitHack on Po wykonaniu chmod +x dokumenthtml dokumenty HTML staną si ę

dokumentami SSI

Plik rsquoconfhttpdconfrsquo lub rsquohtaccessrsquo

Dr inż Stanisław Polak 22 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest ltminusminusecho var=DATE_LOCAL

minusminusgt7 ltbodygt8 lthtmlgt

Wejściowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest 30minus10minus017 ltbodygt8 lthtmlgt

Wyjściowy dokument HTML

Dr inż Stanisław Polak 23 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe zmienne SSI

I DOCUMENT NAMEI DATE LOCALI LAST MODIFIED

Dr inż Stanisław Polak 24 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Polecenia SSI

I configI echoI includeI execI fsizeI flastmodI setI printenvI if elif else endif

Dr inż Stanisław Polak 25 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie robotami

1 Plik robotstxtI User-AgentI Disallow

2 HTMLI META

rsquoRobotsrsquo

3 Kontrola dostępu

1 Userminusagent lowast2 Disallow

1 lthtmlgt2 ltheadgt3 lttitlegt lttitlegt4 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt5 ltminusminus6 ltMETA NAME=ROBOTS CONTENT=NOINDEX FOLLOWgt7 ltMETA NAME=ROBOTS CONTENT=INDEX NOFOLLOWgt8 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt9 minusminusgt

10 ltheadgt11

1 ltLocation notminusindexablegt2 ltIf tolower ( HTTP_USER_AGENT ) =~ robot ||

REMOTE_HOST == rsquobadrobotcomrsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 26 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Informacje dla robotoacutew

1 ltmeta name=Autor content=Stanisław Polakgt2 ltmeta name=Description content=Strona domowa Stanisława Polakagt3 ltmeta name=Keywords content=XML Java PHP ontologiagt

Dr inż Stanisław Polak 27 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

SSL a serwer Apache

I SSL mdash protokoacuteł zaszyfrowanej komunikacjiI Szyfrowanie z kluczem publicznymI Szyfrowanie przesyłanych informacjiI Uwierzytelnianie serwera

Dr inż Stanisław Polak 28 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Podstawowa konfiguracja protokołu SSL

I configure ndashenable-ssl

1 Listen 4432 SSLEngine on3 SSLCertificateKeyFile usrlocalapache2confserver key4 SSLCertificateFile usrlocalapache2confserver crt5 6 ltDirectory usrlocalapache2htdocsbezpiecznygt7 SSLRequireSSL8 ltDirectorygt

confextrahttpd-sslconf

Dr inż Stanisław Polak 29 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Instalacja klucza prywatnego oraz tymczasowego certyfikatu

1 utwoacuterz zaszyfrowany w standardzie DES3 klucz prywatny2 openssl genrsa -des3 1024 gt usrlocalapache2confserverkey3 utwoacuterz niezaszyfrowany klucz prywatny4 openssl genrsa 1024 gt usrlocalapache2confserverkey5 chmod 400 usrlocalapache2confserverkey6 utwoacuterz ż ądanie po ś wiadczonego certyfikatu7 openssl req -new -key usrlocalapache2confserverkey -out tmpservercsr8 9 Country Name (2 letter code ) [ AU ] PL

10 State or Province Name ( full name ) [ SomeminusState ] malopolskie11 Locality Name ( eg city ) [ ] Krakow12 Organization Name ( eg company ) [ Internet Widgits Pty Ltd ] Akademia Gorniczo-Hutnicza13 Organizational Unit Name ( eg section ) [ ] EAIiE Katedra Informatyki14 Common Name ( eg YOUR name ) [ ] wwwicsraghedupl15 Email Address [ ] webmastericsraghedupl16 1718 utwoacuterz tymczasowy certyfikat podpisuj ąc go przez samego siebie19 openssl req -x509 -key usrlocalapache2confserverkey -in tmpservercsr -out usrlocalapache2confservercrt -days 36520 rm tmpserver csr

1 openssl s_client minusconnect localhost 4 4 3 minusstate2 GET HTTP 1 03 ltklawisz Entergt4 ltklawisz Entergt

Testowanie połączenia

Dr inż Stanisław Polak 30 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Bezpieczeństwo serwera WWWI Uprawnienia użytkownikaI Prawa dostępu do plikoacutewI Dostęp do katalogoacutew nadrzędnychI Skrypty CGII DziennikiI Identyfikacja serweraI Firewall aplikacyjny bdquoModSecurityrdquo mdash moduł

bdquomod security2rdquoI Przykład metody włamaniahttp[target]indexphpmosConfig_absolute_path=http[attacker]cmdphp

I Strona głoacutewna mdashhttpwwwmodsecurityorg

I RegułyI httpwwwmodsecurityorgprojectscommercialrulesmdash komercyjne firmybdquoTrustwave SpiderLabs

I httpwwwatomicorpcomchannelsasl-20rulesmdash komercyjne firmybdquoAtomicorprdquo

I httpsgithubcomSpiderLabsowasp-modsecurity-crsmdash darmowe

I httpupdatesatomicorpcomchannelsrulesdelayedmdash darmowe

I Graficzny edytor reguł mdashhttpremonetneacom

1 chown minusR root usrlocalapache2

2 chmod minusR u+w usrlocalapache2

3 chmod gominusrx usrlocalapache2logs

4 chmod gominusrx usrlocalapache2conf

1 ltDirectory gt2 Options FollowSymLinks3 AllowOverride None4 Require all denied5 ltDirectorygt

confhttpdconf

1 ltDirectory homelowastpub l i c h tm lgt

2 Opt ions ExecCGI3 4 ltD i r e c t o r ygt

1 ServerTokens Prod2 ServerSignature Off

confextrahttpd-defaultconfDr inż Stanisław Polak 31 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Firewall aplikacyjny bdquoModSecurityrdquoFazy przetwarzania

Dr inż Stanisław Polak 32 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe reguły

1 Refuse to accep t POST r e q u e s t s t ha t do2 not s p e c i f y r e q u e s t body l e n g t h Do note tha t3 t h i s r u l e shou l d be p receeded by a r u l e t ha t v e r i f i e s4 on l y v a l i d r e q u e s t methods ( e g GET HEAD and POST) a r e used 56 Sk ł adn i a S e cDe f au l tAc t i on akc ja1 akc ja2 akc j a37 SecDefaultAction phase2deny89 Sk ł adn i a SecRule ZMIENNE OPERATOR [AKCJE ]

10 SecRule REQUEST_METHOD ˆPOST$ chain t none11 SecRule REQUEST_HEADERS ContentminusLength ˆ$ t none

Dr inż Stanisław Polak 33 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

CGIOgoacutelny schemat działania

Serwer WWW

Proces

80 443 Przeglądarka WWWGET POST

formularzhtml

Dr inż Stanisław Polak 34 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Co to jest CGI

I CGI (ang Common Gateway Interface) mdash Wspoacutelny interfejs bramyI Interfejs do serwera WWWI Program larrrarr serwer WWW

Dr inż Stanisław Polak 35 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Strategie tworzenia stron dynamicznych

Program generujący dokument HTMLI PerlI RubyI CI C++I

1 2 cout ltlt lth1 gtUżytkownik ltlt login ltlt lth1gt ltlt

endl 3 if ( prawid ł owy ( login ) ampamp prawid ł owe ( has ł o ) )4 cout ltlt Witamyltlt endl 5 else6 cout ltlt Nieprawidłowy login lub hasło ltlt

endl

CGI

Dokument HTML zawierający programI PHPI JSP (Java)I ASP (VBScript C )I

1 lth1gtU ż ytkownik ltphp echo $login gtlth1gt2 ltphp3 4 if ( prawid ł owy ( $login ) ampamp prawid ł owe ( $has ł o ) )

gt5 Witamy6 ltphp else gt7 Nieprawid ł owy login lub has ł o8 ltphp gt

PHP

Dr inż Stanisław Polak 36 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 5: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie dostępem do zasoboacutew WWWModuły

1 Kontrola dostępuI mod authz host

2 UwierzytelnianieI Typ uwierzytelniania

I mod auth basicI mod auth digest

I Dostawca uwierzytelnianaI mod authn anonI mod authn dbdI mod authn dbmI mod authn fileI mod authnz ldapI

3 AutoryzacjaI mod authnz ldapI mod authz dbdI mod authz dbmI mod authz groupfileI mod authz ownerI mod authz user

Dr inż Stanisław Polak 17 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Kontrola dostępuPrzykłady

1 ltLocation gt2 Require host luke icsr agh edu pl3 ltLocationgt

1 ltLocation gt2 ltRequireAllgt3 Require all granted4 Require not ip 1 9 2 1 6 8 1 15 ltRequireAllgt6 ltLocationgt

1 ltLocation http11onlygt2 ltIf SERVER_PROTOCOL == rsquoHTTP 10rsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 18 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie i autoryzacja użytkownikaPrzykład bdquostrona httpwwwprzykladpl~polaktajny na hasłordquo

1 ltDirectory homelowast pub l i c h tm lgt2 3 AllowOverride AuthConfig4 5 ltD i r e c t o r ygt

confextrahttpd-userdirconf

Zmiana lub ustawienie hasła binhtpasswd

1 AuthType Basic2 AuthName Strona na haslo3 AuthBasicProvider file4 AuthUserFile homepolakpublic_htmltajny htpasswd5 Require user polak6 R e q u i r e v a l i dminusu s e r

˜polakpublic htmltajnyhtaccess

Dr inż Stanisław Polak 19 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Uwierzytelnianie łączonePrzykład

1 ltLocation registeredminususersminusonlygt2 AuthType Basic3 AuthName Strona na hasło4 AuthBasicProvider file5 AuthUserFile usrlocalapache2passwdpasswords6 ltRequireAllgt7 Require user polak8 Require ip 1 9 2 1 6 8 1 1 1 9 2 1 6 8 1 29 ltRequireAllgt

10 ltLocationgt

Dr inż Stanisław Polak 20 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Uzgadnianie zawartości

I MultiViewsI Options +MultiViewsI Options All +MultiViews

I Mapa typoacutew mdash pliki var

1 URI document html en2 Content-Type texthtml qs=1 level=23 Content-Language en4 5 Description Strona po angielsku67 URI document html pl8 Content-Type texthtml qs=019 Content-Language pl

10 11 Description Strona po polsku

Przykładowy plik z mapą typoacutew

Dr inż Stanisław Polak 21 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Server Side Includes (SSI)

1 ltminusminuspolecenie atrybut=warto ś ć atrybut=warto ś ć minusminusgt

Składnia dyrektywy SSI

1 2 Options +Includes3 Opt ions +IncludesNOEXEC4 5 AddType texthtml shtml6 AddOutputFilter INCLUDES shtml7 XBitHack on Po wykonaniu chmod +x dokumenthtml dokumenty HTML staną si ę

dokumentami SSI

Plik rsquoconfhttpdconfrsquo lub rsquohtaccessrsquo

Dr inż Stanisław Polak 22 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest ltminusminusecho var=DATE_LOCAL

minusminusgt7 ltbodygt8 lthtmlgt

Wejściowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest 30minus10minus017 ltbodygt8 lthtmlgt

Wyjściowy dokument HTML

Dr inż Stanisław Polak 23 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe zmienne SSI

I DOCUMENT NAMEI DATE LOCALI LAST MODIFIED

Dr inż Stanisław Polak 24 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Polecenia SSI

I configI echoI includeI execI fsizeI flastmodI setI printenvI if elif else endif

Dr inż Stanisław Polak 25 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie robotami

1 Plik robotstxtI User-AgentI Disallow

2 HTMLI META

rsquoRobotsrsquo

3 Kontrola dostępu

1 Userminusagent lowast2 Disallow

1 lthtmlgt2 ltheadgt3 lttitlegt lttitlegt4 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt5 ltminusminus6 ltMETA NAME=ROBOTS CONTENT=NOINDEX FOLLOWgt7 ltMETA NAME=ROBOTS CONTENT=INDEX NOFOLLOWgt8 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt9 minusminusgt

10 ltheadgt11

1 ltLocation notminusindexablegt2 ltIf tolower ( HTTP_USER_AGENT ) =~ robot ||

REMOTE_HOST == rsquobadrobotcomrsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 26 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Informacje dla robotoacutew

1 ltmeta name=Autor content=Stanisław Polakgt2 ltmeta name=Description content=Strona domowa Stanisława Polakagt3 ltmeta name=Keywords content=XML Java PHP ontologiagt

Dr inż Stanisław Polak 27 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

SSL a serwer Apache

I SSL mdash protokoacuteł zaszyfrowanej komunikacjiI Szyfrowanie z kluczem publicznymI Szyfrowanie przesyłanych informacjiI Uwierzytelnianie serwera

Dr inż Stanisław Polak 28 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Podstawowa konfiguracja protokołu SSL

I configure ndashenable-ssl

1 Listen 4432 SSLEngine on3 SSLCertificateKeyFile usrlocalapache2confserver key4 SSLCertificateFile usrlocalapache2confserver crt5 6 ltDirectory usrlocalapache2htdocsbezpiecznygt7 SSLRequireSSL8 ltDirectorygt

confextrahttpd-sslconf

Dr inż Stanisław Polak 29 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Instalacja klucza prywatnego oraz tymczasowego certyfikatu

1 utwoacuterz zaszyfrowany w standardzie DES3 klucz prywatny2 openssl genrsa -des3 1024 gt usrlocalapache2confserverkey3 utwoacuterz niezaszyfrowany klucz prywatny4 openssl genrsa 1024 gt usrlocalapache2confserverkey5 chmod 400 usrlocalapache2confserverkey6 utwoacuterz ż ądanie po ś wiadczonego certyfikatu7 openssl req -new -key usrlocalapache2confserverkey -out tmpservercsr8 9 Country Name (2 letter code ) [ AU ] PL

10 State or Province Name ( full name ) [ SomeminusState ] malopolskie11 Locality Name ( eg city ) [ ] Krakow12 Organization Name ( eg company ) [ Internet Widgits Pty Ltd ] Akademia Gorniczo-Hutnicza13 Organizational Unit Name ( eg section ) [ ] EAIiE Katedra Informatyki14 Common Name ( eg YOUR name ) [ ] wwwicsraghedupl15 Email Address [ ] webmastericsraghedupl16 1718 utwoacuterz tymczasowy certyfikat podpisuj ąc go przez samego siebie19 openssl req -x509 -key usrlocalapache2confserverkey -in tmpservercsr -out usrlocalapache2confservercrt -days 36520 rm tmpserver csr

1 openssl s_client minusconnect localhost 4 4 3 minusstate2 GET HTTP 1 03 ltklawisz Entergt4 ltklawisz Entergt

Testowanie połączenia

Dr inż Stanisław Polak 30 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Bezpieczeństwo serwera WWWI Uprawnienia użytkownikaI Prawa dostępu do plikoacutewI Dostęp do katalogoacutew nadrzędnychI Skrypty CGII DziennikiI Identyfikacja serweraI Firewall aplikacyjny bdquoModSecurityrdquo mdash moduł

bdquomod security2rdquoI Przykład metody włamaniahttp[target]indexphpmosConfig_absolute_path=http[attacker]cmdphp

I Strona głoacutewna mdashhttpwwwmodsecurityorg

I RegułyI httpwwwmodsecurityorgprojectscommercialrulesmdash komercyjne firmybdquoTrustwave SpiderLabs

I httpwwwatomicorpcomchannelsasl-20rulesmdash komercyjne firmybdquoAtomicorprdquo

I httpsgithubcomSpiderLabsowasp-modsecurity-crsmdash darmowe

I httpupdatesatomicorpcomchannelsrulesdelayedmdash darmowe

I Graficzny edytor reguł mdashhttpremonetneacom

1 chown minusR root usrlocalapache2

2 chmod minusR u+w usrlocalapache2

3 chmod gominusrx usrlocalapache2logs

4 chmod gominusrx usrlocalapache2conf

1 ltDirectory gt2 Options FollowSymLinks3 AllowOverride None4 Require all denied5 ltDirectorygt

confhttpdconf

1 ltDirectory homelowastpub l i c h tm lgt

2 Opt ions ExecCGI3 4 ltD i r e c t o r ygt

1 ServerTokens Prod2 ServerSignature Off

confextrahttpd-defaultconfDr inż Stanisław Polak 31 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Firewall aplikacyjny bdquoModSecurityrdquoFazy przetwarzania

Dr inż Stanisław Polak 32 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe reguły

1 Refuse to accep t POST r e q u e s t s t ha t do2 not s p e c i f y r e q u e s t body l e n g t h Do note tha t3 t h i s r u l e shou l d be p receeded by a r u l e t ha t v e r i f i e s4 on l y v a l i d r e q u e s t methods ( e g GET HEAD and POST) a r e used 56 Sk ł adn i a S e cDe f au l tAc t i on akc ja1 akc ja2 akc j a37 SecDefaultAction phase2deny89 Sk ł adn i a SecRule ZMIENNE OPERATOR [AKCJE ]

10 SecRule REQUEST_METHOD ˆPOST$ chain t none11 SecRule REQUEST_HEADERS ContentminusLength ˆ$ t none

Dr inż Stanisław Polak 33 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

CGIOgoacutelny schemat działania

Serwer WWW

Proces

80 443 Przeglądarka WWWGET POST

formularzhtml

Dr inż Stanisław Polak 34 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Co to jest CGI

I CGI (ang Common Gateway Interface) mdash Wspoacutelny interfejs bramyI Interfejs do serwera WWWI Program larrrarr serwer WWW

Dr inż Stanisław Polak 35 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Strategie tworzenia stron dynamicznych

Program generujący dokument HTMLI PerlI RubyI CI C++I

1 2 cout ltlt lth1 gtUżytkownik ltlt login ltlt lth1gt ltlt

endl 3 if ( prawid ł owy ( login ) ampamp prawid ł owe ( has ł o ) )4 cout ltlt Witamyltlt endl 5 else6 cout ltlt Nieprawidłowy login lub hasło ltlt

endl

CGI

Dokument HTML zawierający programI PHPI JSP (Java)I ASP (VBScript C )I

1 lth1gtU ż ytkownik ltphp echo $login gtlth1gt2 ltphp3 4 if ( prawid ł owy ( $login ) ampamp prawid ł owe ( $has ł o ) )

gt5 Witamy6 ltphp else gt7 Nieprawid ł owy login lub has ł o8 ltphp gt

PHP

Dr inż Stanisław Polak 36 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 6: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Serwer bdquoApacherdquo Usługa WWW

Uzgadnianie zawartości

I MultiViewsI Options +MultiViewsI Options All +MultiViews

I Mapa typoacutew mdash pliki var

1 URI document html en2 Content-Type texthtml qs=1 level=23 Content-Language en4 5 Description Strona po angielsku67 URI document html pl8 Content-Type texthtml qs=019 Content-Language pl

10 11 Description Strona po polsku

Przykładowy plik z mapą typoacutew

Dr inż Stanisław Polak 21 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Server Side Includes (SSI)

1 ltminusminuspolecenie atrybut=warto ś ć atrybut=warto ś ć minusminusgt

Składnia dyrektywy SSI

1 2 Options +Includes3 Opt ions +IncludesNOEXEC4 5 AddType texthtml shtml6 AddOutputFilter INCLUDES shtml7 XBitHack on Po wykonaniu chmod +x dokumenthtml dokumenty HTML staną si ę

dokumentami SSI

Plik rsquoconfhttpdconfrsquo lub rsquohtaccessrsquo

Dr inż Stanisław Polak 22 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest ltminusminusecho var=DATE_LOCAL

minusminusgt7 ltbodygt8 lthtmlgt

Wejściowy dokument SSI

1 lthtmlgt2 ltheadgt3 lttitlegtdatalttitlegt4 ltheadgt5 ltbodygt6 Dzisiaj jest 30minus10minus017 ltbodygt8 lthtmlgt

Wyjściowy dokument HTML

Dr inż Stanisław Polak 23 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe zmienne SSI

I DOCUMENT NAMEI DATE LOCALI LAST MODIFIED

Dr inż Stanisław Polak 24 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Polecenia SSI

I configI echoI includeI execI fsizeI flastmodI setI printenvI if elif else endif

Dr inż Stanisław Polak 25 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie robotami

1 Plik robotstxtI User-AgentI Disallow

2 HTMLI META

rsquoRobotsrsquo

3 Kontrola dostępu

1 Userminusagent lowast2 Disallow

1 lthtmlgt2 ltheadgt3 lttitlegt lttitlegt4 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt5 ltminusminus6 ltMETA NAME=ROBOTS CONTENT=NOINDEX FOLLOWgt7 ltMETA NAME=ROBOTS CONTENT=INDEX NOFOLLOWgt8 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt9 minusminusgt

10 ltheadgt11

1 ltLocation notminusindexablegt2 ltIf tolower ( HTTP_USER_AGENT ) =~ robot ||

REMOTE_HOST == rsquobadrobotcomrsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 26 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Informacje dla robotoacutew

1 ltmeta name=Autor content=Stanisław Polakgt2 ltmeta name=Description content=Strona domowa Stanisława Polakagt3 ltmeta name=Keywords content=XML Java PHP ontologiagt

Dr inż Stanisław Polak 27 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

SSL a serwer Apache

I SSL mdash protokoacuteł zaszyfrowanej komunikacjiI Szyfrowanie z kluczem publicznymI Szyfrowanie przesyłanych informacjiI Uwierzytelnianie serwera

Dr inż Stanisław Polak 28 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Podstawowa konfiguracja protokołu SSL

I configure ndashenable-ssl

1 Listen 4432 SSLEngine on3 SSLCertificateKeyFile usrlocalapache2confserver key4 SSLCertificateFile usrlocalapache2confserver crt5 6 ltDirectory usrlocalapache2htdocsbezpiecznygt7 SSLRequireSSL8 ltDirectorygt

confextrahttpd-sslconf

Dr inż Stanisław Polak 29 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Instalacja klucza prywatnego oraz tymczasowego certyfikatu

1 utwoacuterz zaszyfrowany w standardzie DES3 klucz prywatny2 openssl genrsa -des3 1024 gt usrlocalapache2confserverkey3 utwoacuterz niezaszyfrowany klucz prywatny4 openssl genrsa 1024 gt usrlocalapache2confserverkey5 chmod 400 usrlocalapache2confserverkey6 utwoacuterz ż ądanie po ś wiadczonego certyfikatu7 openssl req -new -key usrlocalapache2confserverkey -out tmpservercsr8 9 Country Name (2 letter code ) [ AU ] PL

10 State or Province Name ( full name ) [ SomeminusState ] malopolskie11 Locality Name ( eg city ) [ ] Krakow12 Organization Name ( eg company ) [ Internet Widgits Pty Ltd ] Akademia Gorniczo-Hutnicza13 Organizational Unit Name ( eg section ) [ ] EAIiE Katedra Informatyki14 Common Name ( eg YOUR name ) [ ] wwwicsraghedupl15 Email Address [ ] webmastericsraghedupl16 1718 utwoacuterz tymczasowy certyfikat podpisuj ąc go przez samego siebie19 openssl req -x509 -key usrlocalapache2confserverkey -in tmpservercsr -out usrlocalapache2confservercrt -days 36520 rm tmpserver csr

1 openssl s_client minusconnect localhost 4 4 3 minusstate2 GET HTTP 1 03 ltklawisz Entergt4 ltklawisz Entergt

Testowanie połączenia

Dr inż Stanisław Polak 30 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Bezpieczeństwo serwera WWWI Uprawnienia użytkownikaI Prawa dostępu do plikoacutewI Dostęp do katalogoacutew nadrzędnychI Skrypty CGII DziennikiI Identyfikacja serweraI Firewall aplikacyjny bdquoModSecurityrdquo mdash moduł

bdquomod security2rdquoI Przykład metody włamaniahttp[target]indexphpmosConfig_absolute_path=http[attacker]cmdphp

I Strona głoacutewna mdashhttpwwwmodsecurityorg

I RegułyI httpwwwmodsecurityorgprojectscommercialrulesmdash komercyjne firmybdquoTrustwave SpiderLabs

I httpwwwatomicorpcomchannelsasl-20rulesmdash komercyjne firmybdquoAtomicorprdquo

I httpsgithubcomSpiderLabsowasp-modsecurity-crsmdash darmowe

I httpupdatesatomicorpcomchannelsrulesdelayedmdash darmowe

I Graficzny edytor reguł mdashhttpremonetneacom

1 chown minusR root usrlocalapache2

2 chmod minusR u+w usrlocalapache2

3 chmod gominusrx usrlocalapache2logs

4 chmod gominusrx usrlocalapache2conf

1 ltDirectory gt2 Options FollowSymLinks3 AllowOverride None4 Require all denied5 ltDirectorygt

confhttpdconf

1 ltDirectory homelowastpub l i c h tm lgt

2 Opt ions ExecCGI3 4 ltD i r e c t o r ygt

1 ServerTokens Prod2 ServerSignature Off

confextrahttpd-defaultconfDr inż Stanisław Polak 31 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Firewall aplikacyjny bdquoModSecurityrdquoFazy przetwarzania

Dr inż Stanisław Polak 32 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe reguły

1 Refuse to accep t POST r e q u e s t s t ha t do2 not s p e c i f y r e q u e s t body l e n g t h Do note tha t3 t h i s r u l e shou l d be p receeded by a r u l e t ha t v e r i f i e s4 on l y v a l i d r e q u e s t methods ( e g GET HEAD and POST) a r e used 56 Sk ł adn i a S e cDe f au l tAc t i on akc ja1 akc ja2 akc j a37 SecDefaultAction phase2deny89 Sk ł adn i a SecRule ZMIENNE OPERATOR [AKCJE ]

10 SecRule REQUEST_METHOD ˆPOST$ chain t none11 SecRule REQUEST_HEADERS ContentminusLength ˆ$ t none

Dr inż Stanisław Polak 33 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

CGIOgoacutelny schemat działania

Serwer WWW

Proces

80 443 Przeglądarka WWWGET POST

formularzhtml

Dr inż Stanisław Polak 34 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Co to jest CGI

I CGI (ang Common Gateway Interface) mdash Wspoacutelny interfejs bramyI Interfejs do serwera WWWI Program larrrarr serwer WWW

Dr inż Stanisław Polak 35 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Strategie tworzenia stron dynamicznych

Program generujący dokument HTMLI PerlI RubyI CI C++I

1 2 cout ltlt lth1 gtUżytkownik ltlt login ltlt lth1gt ltlt

endl 3 if ( prawid ł owy ( login ) ampamp prawid ł owe ( has ł o ) )4 cout ltlt Witamyltlt endl 5 else6 cout ltlt Nieprawidłowy login lub hasło ltlt

endl

CGI

Dokument HTML zawierający programI PHPI JSP (Java)I ASP (VBScript C )I

1 lth1gtU ż ytkownik ltphp echo $login gtlth1gt2 ltphp3 4 if ( prawid ł owy ( $login ) ampamp prawid ł owe ( $has ł o ) )

gt5 Witamy6 ltphp else gt7 Nieprawid ł owy login lub has ł o8 ltphp gt

PHP

Dr inż Stanisław Polak 36 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 7: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Serwer bdquoApacherdquo Usługa WWW

Polecenia SSI

I configI echoI includeI execI fsizeI flastmodI setI printenvI if elif else endif

Dr inż Stanisław Polak 25 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Sterowanie robotami

1 Plik robotstxtI User-AgentI Disallow

2 HTMLI META

rsquoRobotsrsquo

3 Kontrola dostępu

1 Userminusagent lowast2 Disallow

1 lthtmlgt2 ltheadgt3 lttitlegt lttitlegt4 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt5 ltminusminus6 ltMETA NAME=ROBOTS CONTENT=NOINDEX FOLLOWgt7 ltMETA NAME=ROBOTS CONTENT=INDEX NOFOLLOWgt8 ltMETA NAME=ROBOTS CONTENT=NOINDEX NOFOLLOWgt9 minusminusgt

10 ltheadgt11

1 ltLocation notminusindexablegt2 ltIf tolower ( HTTP_USER_AGENT ) =~ robot ||

REMOTE_HOST == rsquobadrobotcomrsquogt3 Require all denied4 ltIfgt5 ltLocationgt

Dr inż Stanisław Polak 26 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Informacje dla robotoacutew

1 ltmeta name=Autor content=Stanisław Polakgt2 ltmeta name=Description content=Strona domowa Stanisława Polakagt3 ltmeta name=Keywords content=XML Java PHP ontologiagt

Dr inż Stanisław Polak 27 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

SSL a serwer Apache

I SSL mdash protokoacuteł zaszyfrowanej komunikacjiI Szyfrowanie z kluczem publicznymI Szyfrowanie przesyłanych informacjiI Uwierzytelnianie serwera

Dr inż Stanisław Polak 28 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Podstawowa konfiguracja protokołu SSL

I configure ndashenable-ssl

1 Listen 4432 SSLEngine on3 SSLCertificateKeyFile usrlocalapache2confserver key4 SSLCertificateFile usrlocalapache2confserver crt5 6 ltDirectory usrlocalapache2htdocsbezpiecznygt7 SSLRequireSSL8 ltDirectorygt

confextrahttpd-sslconf

Dr inż Stanisław Polak 29 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Instalacja klucza prywatnego oraz tymczasowego certyfikatu

1 utwoacuterz zaszyfrowany w standardzie DES3 klucz prywatny2 openssl genrsa -des3 1024 gt usrlocalapache2confserverkey3 utwoacuterz niezaszyfrowany klucz prywatny4 openssl genrsa 1024 gt usrlocalapache2confserverkey5 chmod 400 usrlocalapache2confserverkey6 utwoacuterz ż ądanie po ś wiadczonego certyfikatu7 openssl req -new -key usrlocalapache2confserverkey -out tmpservercsr8 9 Country Name (2 letter code ) [ AU ] PL

10 State or Province Name ( full name ) [ SomeminusState ] malopolskie11 Locality Name ( eg city ) [ ] Krakow12 Organization Name ( eg company ) [ Internet Widgits Pty Ltd ] Akademia Gorniczo-Hutnicza13 Organizational Unit Name ( eg section ) [ ] EAIiE Katedra Informatyki14 Common Name ( eg YOUR name ) [ ] wwwicsraghedupl15 Email Address [ ] webmastericsraghedupl16 1718 utwoacuterz tymczasowy certyfikat podpisuj ąc go przez samego siebie19 openssl req -x509 -key usrlocalapache2confserverkey -in tmpservercsr -out usrlocalapache2confservercrt -days 36520 rm tmpserver csr

1 openssl s_client minusconnect localhost 4 4 3 minusstate2 GET HTTP 1 03 ltklawisz Entergt4 ltklawisz Entergt

Testowanie połączenia

Dr inż Stanisław Polak 30 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Bezpieczeństwo serwera WWWI Uprawnienia użytkownikaI Prawa dostępu do plikoacutewI Dostęp do katalogoacutew nadrzędnychI Skrypty CGII DziennikiI Identyfikacja serweraI Firewall aplikacyjny bdquoModSecurityrdquo mdash moduł

bdquomod security2rdquoI Przykład metody włamaniahttp[target]indexphpmosConfig_absolute_path=http[attacker]cmdphp

I Strona głoacutewna mdashhttpwwwmodsecurityorg

I RegułyI httpwwwmodsecurityorgprojectscommercialrulesmdash komercyjne firmybdquoTrustwave SpiderLabs

I httpwwwatomicorpcomchannelsasl-20rulesmdash komercyjne firmybdquoAtomicorprdquo

I httpsgithubcomSpiderLabsowasp-modsecurity-crsmdash darmowe

I httpupdatesatomicorpcomchannelsrulesdelayedmdash darmowe

I Graficzny edytor reguł mdashhttpremonetneacom

1 chown minusR root usrlocalapache2

2 chmod minusR u+w usrlocalapache2

3 chmod gominusrx usrlocalapache2logs

4 chmod gominusrx usrlocalapache2conf

1 ltDirectory gt2 Options FollowSymLinks3 AllowOverride None4 Require all denied5 ltDirectorygt

confhttpdconf

1 ltDirectory homelowastpub l i c h tm lgt

2 Opt ions ExecCGI3 4 ltD i r e c t o r ygt

1 ServerTokens Prod2 ServerSignature Off

confextrahttpd-defaultconfDr inż Stanisław Polak 31 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Firewall aplikacyjny bdquoModSecurityrdquoFazy przetwarzania

Dr inż Stanisław Polak 32 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe reguły

1 Refuse to accep t POST r e q u e s t s t ha t do2 not s p e c i f y r e q u e s t body l e n g t h Do note tha t3 t h i s r u l e shou l d be p receeded by a r u l e t ha t v e r i f i e s4 on l y v a l i d r e q u e s t methods ( e g GET HEAD and POST) a r e used 56 Sk ł adn i a S e cDe f au l tAc t i on akc ja1 akc ja2 akc j a37 SecDefaultAction phase2deny89 Sk ł adn i a SecRule ZMIENNE OPERATOR [AKCJE ]

10 SecRule REQUEST_METHOD ˆPOST$ chain t none11 SecRule REQUEST_HEADERS ContentminusLength ˆ$ t none

Dr inż Stanisław Polak 33 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

CGIOgoacutelny schemat działania

Serwer WWW

Proces

80 443 Przeglądarka WWWGET POST

formularzhtml

Dr inż Stanisław Polak 34 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Co to jest CGI

I CGI (ang Common Gateway Interface) mdash Wspoacutelny interfejs bramyI Interfejs do serwera WWWI Program larrrarr serwer WWW

Dr inż Stanisław Polak 35 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Strategie tworzenia stron dynamicznych

Program generujący dokument HTMLI PerlI RubyI CI C++I

1 2 cout ltlt lth1 gtUżytkownik ltlt login ltlt lth1gt ltlt

endl 3 if ( prawid ł owy ( login ) ampamp prawid ł owe ( has ł o ) )4 cout ltlt Witamyltlt endl 5 else6 cout ltlt Nieprawidłowy login lub hasło ltlt

endl

CGI

Dokument HTML zawierający programI PHPI JSP (Java)I ASP (VBScript C )I

1 lth1gtU ż ytkownik ltphp echo $login gtlth1gt2 ltphp3 4 if ( prawid ł owy ( $login ) ampamp prawid ł owe ( $has ł o ) )

gt5 Witamy6 ltphp else gt7 Nieprawid ł owy login lub has ł o8 ltphp gt

PHP

Dr inż Stanisław Polak 36 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 8: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Serwer bdquoApacherdquo Usługa WWW

Podstawowa konfiguracja protokołu SSL

I configure ndashenable-ssl

1 Listen 4432 SSLEngine on3 SSLCertificateKeyFile usrlocalapache2confserver key4 SSLCertificateFile usrlocalapache2confserver crt5 6 ltDirectory usrlocalapache2htdocsbezpiecznygt7 SSLRequireSSL8 ltDirectorygt

confextrahttpd-sslconf

Dr inż Stanisław Polak 29 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Instalacja klucza prywatnego oraz tymczasowego certyfikatu

1 utwoacuterz zaszyfrowany w standardzie DES3 klucz prywatny2 openssl genrsa -des3 1024 gt usrlocalapache2confserverkey3 utwoacuterz niezaszyfrowany klucz prywatny4 openssl genrsa 1024 gt usrlocalapache2confserverkey5 chmod 400 usrlocalapache2confserverkey6 utwoacuterz ż ądanie po ś wiadczonego certyfikatu7 openssl req -new -key usrlocalapache2confserverkey -out tmpservercsr8 9 Country Name (2 letter code ) [ AU ] PL

10 State or Province Name ( full name ) [ SomeminusState ] malopolskie11 Locality Name ( eg city ) [ ] Krakow12 Organization Name ( eg company ) [ Internet Widgits Pty Ltd ] Akademia Gorniczo-Hutnicza13 Organizational Unit Name ( eg section ) [ ] EAIiE Katedra Informatyki14 Common Name ( eg YOUR name ) [ ] wwwicsraghedupl15 Email Address [ ] webmastericsraghedupl16 1718 utwoacuterz tymczasowy certyfikat podpisuj ąc go przez samego siebie19 openssl req -x509 -key usrlocalapache2confserverkey -in tmpservercsr -out usrlocalapache2confservercrt -days 36520 rm tmpserver csr

1 openssl s_client minusconnect localhost 4 4 3 minusstate2 GET HTTP 1 03 ltklawisz Entergt4 ltklawisz Entergt

Testowanie połączenia

Dr inż Stanisław Polak 30 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

Serwer bdquoApacherdquo Usługa WWW

Bezpieczeństwo serwera WWWI Uprawnienia użytkownikaI Prawa dostępu do plikoacutewI Dostęp do katalogoacutew nadrzędnychI Skrypty CGII DziennikiI Identyfikacja serweraI Firewall aplikacyjny bdquoModSecurityrdquo mdash moduł

bdquomod security2rdquoI Przykład metody włamaniahttp[target]indexphpmosConfig_absolute_path=http[attacker]cmdphp

I Strona głoacutewna mdashhttpwwwmodsecurityorg

I RegułyI httpwwwmodsecurityorgprojectscommercialrulesmdash komercyjne firmybdquoTrustwave SpiderLabs

I httpwwwatomicorpcomchannelsasl-20rulesmdash komercyjne firmybdquoAtomicorprdquo

I httpsgithubcomSpiderLabsowasp-modsecurity-crsmdash darmowe

I httpupdatesatomicorpcomchannelsrulesdelayedmdash darmowe

I Graficzny edytor reguł mdashhttpremonetneacom

1 chown minusR root usrlocalapache2

2 chmod minusR u+w usrlocalapache2

3 chmod gominusrx usrlocalapache2logs

4 chmod gominusrx usrlocalapache2conf

1 ltDirectory gt2 Options FollowSymLinks3 AllowOverride None4 Require all denied5 ltDirectorygt

confhttpdconf

1 ltDirectory homelowastpub l i c h tm lgt

2 Opt ions ExecCGI3 4 ltD i r e c t o r ygt

1 ServerTokens Prod2 ServerSignature Off

confextrahttpd-defaultconfDr inż Stanisław Polak 31 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Firewall aplikacyjny bdquoModSecurityrdquoFazy przetwarzania

Dr inż Stanisław Polak 32 Przedmiot Internet i jego zastosowanie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe reguły

1 Refuse to accep t POST r e q u e s t s t ha t do2 not s p e c i f y r e q u e s t body l e n g t h Do note tha t3 t h i s r u l e shou l d be p receeded by a r u l e t ha t v e r i f i e s4 on l y v a l i d r e q u e s t methods ( e g GET HEAD and POST) a r e used 56 Sk ł adn i a S e cDe f au l tAc t i on akc ja1 akc ja2 akc j a37 SecDefaultAction phase2deny89 Sk ł adn i a SecRule ZMIENNE OPERATOR [AKCJE ]

10 SecRule REQUEST_METHOD ˆPOST$ chain t none11 SecRule REQUEST_HEADERS ContentminusLength ˆ$ t none

Dr inż Stanisław Polak 33 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

CGIOgoacutelny schemat działania

Serwer WWW

Proces

80 443 Przeglądarka WWWGET POST

formularzhtml

Dr inż Stanisław Polak 34 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Co to jest CGI

I CGI (ang Common Gateway Interface) mdash Wspoacutelny interfejs bramyI Interfejs do serwera WWWI Program larrrarr serwer WWW

Dr inż Stanisław Polak 35 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Strategie tworzenia stron dynamicznych

Program generujący dokument HTMLI PerlI RubyI CI C++I

1 2 cout ltlt lth1 gtUżytkownik ltlt login ltlt lth1gt ltlt

endl 3 if ( prawid ł owy ( login ) ampamp prawid ł owe ( has ł o ) )4 cout ltlt Witamyltlt endl 5 else6 cout ltlt Nieprawidłowy login lub hasło ltlt

endl

CGI

Dokument HTML zawierający programI PHPI JSP (Java)I ASP (VBScript C )I

1 lth1gtU ż ytkownik ltphp echo $login gtlth1gt2 ltphp3 4 if ( prawid ł owy ( $login ) ampamp prawid ł owe ( $has ł o ) )

gt5 Witamy6 ltphp else gt7 Nieprawid ł owy login lub has ł o8 ltphp gt

PHP

Dr inż Stanisław Polak 36 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 9: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Serwer bdquoApacherdquo Usługa WWW

Przykładowe reguły

1 Refuse to accep t POST r e q u e s t s t ha t do2 not s p e c i f y r e q u e s t body l e n g t h Do note tha t3 t h i s r u l e shou l d be p receeded by a r u l e t ha t v e r i f i e s4 on l y v a l i d r e q u e s t methods ( e g GET HEAD and POST) a r e used 56 Sk ł adn i a S e cDe f au l tAc t i on akc ja1 akc ja2 akc j a37 SecDefaultAction phase2deny89 Sk ł adn i a SecRule ZMIENNE OPERATOR [AKCJE ]

10 SecRule REQUEST_METHOD ˆPOST$ chain t none11 SecRule REQUEST_HEADERS ContentminusLength ˆ$ t none

Dr inż Stanisław Polak 33 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

CGIOgoacutelny schemat działania

Serwer WWW

Proces

80 443 Przeglądarka WWWGET POST

formularzhtml

Dr inż Stanisław Polak 34 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Co to jest CGI

I CGI (ang Common Gateway Interface) mdash Wspoacutelny interfejs bramyI Interfejs do serwera WWWI Program larrrarr serwer WWW

Dr inż Stanisław Polak 35 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Strategie tworzenia stron dynamicznych

Program generujący dokument HTMLI PerlI RubyI CI C++I

1 2 cout ltlt lth1 gtUżytkownik ltlt login ltlt lth1gt ltlt

endl 3 if ( prawid ł owy ( login ) ampamp prawid ł owe ( has ł o ) )4 cout ltlt Witamyltlt endl 5 else6 cout ltlt Nieprawidłowy login lub hasło ltlt

endl

CGI

Dokument HTML zawierający programI PHPI JSP (Java)I ASP (VBScript C )I

1 lth1gtU ż ytkownik ltphp echo $login gtlth1gt2 ltphp3 4 if ( prawid ł owy ( $login ) ampamp prawid ł owe ( $has ł o ) )

gt5 Witamy6 ltphp else gt7 Nieprawid ł owy login lub has ł o8 ltphp gt

PHP

Dr inż Stanisław Polak 36 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 10: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

CGI Usługa WWW

Wysyłanie danych z formularza

Zatwierdzanie danych 7minusrarr kodowanie 7minusrarr wysyłanie do serwera WWW

1 ltform method = enctype = a c t i o n=gt2 3 ltformgt4 ltminusminusltform action=mailtoadres e-mailsubject=temat method=POST e n c t y p e=

textplaingt ltformgtminusminusgt

I GETI POST

I applicationx-www-form-urlencoded

I multipartform-data

Dr inż Stanisław Polak 37 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoPrzykład

1 ltform action=http wwwserwercomskryptcgigt2 Login ltinput name=login type=TEXTgtltbrgt3 Has ł o ltinput name=haslo type=PASSWORDgt4 ltformgt

Dokument HTML

Login Jan

Hasło Kowalski (Nowak)

1 login=Janamphaslo=Kowalski+28Nowak29

Zakodowane dane

Dr inż Stanisław Polak 38 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquoapplicationx-www-form-urlencodedrdquoWysyłanie danych

1 ltform action=http wwwserwercomskryptcgi method=gt2 3 ltformgt

1 GET skrypt cgilogin=Janamphaslo=Kowalski+28Nowak29 HTTP 1 0

method=rdquoGETrdquo

1 POST skrypt cgi HTTP 1 02 ContentminusLength 353 ContentminusType applicationxminuswwwminusformminusurlencoded45 login=Janamphaslo=Kowalski+28Nowak29

method=rdquoPOSTrdquo

Dr inż Stanisław Polak 39 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Kodowanie bdquomultipartform-datardquo

1 ltform action= method=POST e n c t y p e=multipartform -datagt2 ltinput name=login type=TEXTgt3 ltinput name=haslo type=PASSWORDgt4 ltinput name=plik type=FILE a c c e p t=imagejpeg imagegifgt5 ltminusminusltinput type=hidden name=MAX_FILE_SIZE value=20000gtminusminusgt6 ltformgt

Jan

Kowalski (Nowak)

obrazjpg

1 POST skrypt cgi HTTP 1 02 ContentminusLength 7753 ContentminusType multipartformminusdata boundary=minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669245 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus81527650181866459910179066926 ContentminusDisposition formminusdata name=login78 Jan9 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

10 ContentminusDisposition formminusdata name=haslo1112 Kowalski ( Nowak )13 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus815276501818664599101790669214 ContentminusDisposition formminusdata name=plik filename=obrazjpg15 ContentminusType imagejpeg16 ContentminusTransferminusEncoding binary1718 Zawarto ś ć pliku obraz jpg19 minusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminusminus8152765018186645991017906692

Dr inż Stanisław Polak 40 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 11: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

CGI Usługa WWW

Skrypt CGI mdash otrzymywane dane

I Informacje (poprzez zmienne środowiskowe)I O przeglądarceI O serwerzeI O programie CGI

I Zakodowane dane z formularzyI GET minusrarr zmienna środowiskowaI POST minusrarr stdin

Dr inż Stanisław Polak 41 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przykładowe zmienne środowiskowe

I REQUEST METHODI QUERY STRINGI CONTENT LENGTHI CONTENT TYPE

Dr inż Stanisław Polak 42 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

GET kontra POST

I Metoda bdquoGETrdquoI QUERY STRINGI Limit

I Metoda bdquoPOSTrdquoI stdinI CONTENT LENGTHI Brak limitu

Dr inż Stanisław Polak 43 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGI

1 Wypisanie nagłoacutewkaI Content-typeI LocationI Status

2 Wypisanie danych na stdout

Dr inż Stanisław Polak 44 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 12: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

CGI Usługa WWW

Wysyłka danych ze skryptu CGIPrzykład

1 include lti o s t r e a mgt2 using namespace std 3 main ( )4 cout ltlt Content -typetexthtml ltlt endl ltlt

endl 5 cout ltlt lthtml gtnlthead gtn 6 cout ltlt lttitle gtWitaj lttitle gtn 7 cout ltlt lthead gtnltbody gtn 8 cout ltlt lth1gtWitaj lth1 gtn 9 cout ltlt ltbody gtnlthtml gtn

10

bdquoSkryptrdquo CGI w C++

Contentminustype texthtml

lthtmlgtltheadgtlttitlegtWitajlttitlegtltheadgtltbodygtlth1gtWitajlth1gtltbodygtlthtmlgt

Dane wyjściowe

Dr inż Stanisław Polak 45 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Odczytywanie argumentoacutew przekazanych w linii adresu

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] ) 6 cout ltlt Content -typetextplain ltlt endl ltlt endl 7 cout ltlt argc = ltlt argc ltlt endl 8 for ( int i=0 i lt argc i++)9 cout ltlt argv[ ltlt i ltlt ] = ltlt argv [ i ] ltlt endl

10 cout ltlt QUERY_STRING = rsquo ltlt getenv ( QUERY_STRING ) ltlt rsquo ltlt endl 11

bdquoSkryptrdquo CGI w C++

argc = 1argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiQUERY_STRING = rsquo a=1ampb=2ampc=3rsquo

httpadresplskryptcgia=1ampb=2ampc=3

argc = 4argv [ 0 ] = usrlocalapache2htdocs

skrypt cgiargv [ 1 ] = aargv [ 2 ] = bargv [ 3 ] = campdQUERY_STRING = rsquo a+b+campd rsquo

httpadresplskryptcgia+b+campd

Dr inż Stanisław Polak 46 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Przetwarzanie danych zawartych w formularzuOgoacutelny algorytm

Start

$REQUEST METHOD

Odczytaj dane zawartew $QUERY STRING

Odczytaj ze stan-dardowego wejścia$CONTENT LENGTH

bajtoacutew danych

Rozkoduj danezakodowane metodąrsquoapplicationx-www-

form-urlencodedrsquo

Rozkoduj danezakodowane metodą$CONTENT TYPE

GET POST

Dr inż Stanisław Polak 47 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Biblioteki do obsługi CGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIhtmlPython cgipy Standardowa biblioteka Python-

-aRuby cgirb Standardowa biblioteka RubyC CGIC httpwwwboutellcom

cgiccgi-c httpcgi-csourceforge

netC++ CGICC httpwwwgnuorg

softwarecgiccRudeCGI httprudeservercom

cgiparser

Dr inż Stanisław Polak 48 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 13: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

CGI Usługa WWW

Śledzenie skryptu CGI

I stderr minusrarr dziennik błędoacutew logserror logsI Z linii komend

1 export REQUEST_METHOD=rsquoGET rsquo2 export QUERY_STRING=rsquopole1=warto ś ć1amppole2=warto ś ć 2 amp rsquo3 usrlocalapache2cgiminusbinskrypt cgi

Dr inż Stanisław Polak 49 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Bezpieczeństwo skryptoacutew CGI

I Skrypt powinienrobić tylko doczego zostałprzeznaczony

I Przeglądarka niepowinna dostawaćwięcej informacjiniż potrzebuje

I Nie wolno ufaćużytkownikowi wkwestiipoprawnościpodawanychinformacji

1 include lts t d i o hgt2 include lts t r i n g hgt3 include lts t d l i b hgt4 char haslo[3]=5 int zalogowany=06 lowast7 lowast Program kt oacute r y pokazu j e s k u t k i p r z epe ł n i e n i a bu fo r a8 lowast Można s i ę za logowa ć n i e z na j ą c has ł a9 lowast

10 main ( )11 12 printf ( Content -typetexthtmlnn ) 13 strcpy(haslogetenv(QUERY STRING))14 printf ( tablica rsquohaslorsquo przechowuje łańcuch ltbgtsltbgtltbrgt haslo )

15 printf ( Wartością zmiennej rsquozalogowany rsquo jest ltbgtdltbgtltbrgt

zalogowany ) 16 if ( strcmp ( haslo aa ) )17 zalogowany=118 if ( zalogowany = 0)19 printf ( ltspan style=rsquobackground -color 00 FF00 rsquogtZostaleś

zalogowany ltspan gt ) 20 else21 printf ( ltspan style=rsquobackground -color FF0000 rsquogtBłędne hasłolt

span gt ) 22

Niebezpieczny bdquoskryptrdquo w C

Dr inż Stanisław Polak 50 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

CGI Usługa WWW

Mechanizmy śledzenia sesji

1 Przepisywanie adresoacutew URL

2 Ukryte pola formularza

3 Ciasteczka

Dr inż Stanisław Polak 51 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiPrzepisywanie adresoacutew URL

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt lta href=rsquoskrypt2cgiidSesji=123rsquogtWyślij

dane ltagt 7

skrypt1cgi

Contentminustype texthtml charset=utfminus8

lta href=rsquo s k r y p t 2 c g i i d S e s j i =123 rsquogtWy ś lij daneltagt

stdout

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

skrypt2cgi

Dr inż Stanisław Polak 52 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 14: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

CGI Usługa WWW

Mechanizmy śledzenia sesjiUkryte pola formularza

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl ltlt endl 6 cout ltlt ltform action=rsquoskrypt2cgi rsquogt ltlt endl 7 cout ltlt ltinput type=rsquohiddenrsquo name=rsquoidSesjirsquo

value=rsquo123rsquogt ltlt endl 8 cout ltlt ltinput type=rsquosubmit rsquo value=rsquoWyślij

dane rsquogt ltlt endl 9 cout ltlt ltform gt ltlt endl

10

Contentminustype texthtml charset=utfminus8

ltform action=rsquo s k r y p t 2 c g i rsquogtltinput type=rsquo hidden rsquo name=rsquo i d S e s j i rsquo value= rsquo123 rsquogtltinput type=rsquo submit rsquo value=rsquoWyś l i j dane rsquogtltformgt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

QUERY STRING ) 8

Dr inż Stanisław Polak 53 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Mechanizmy śledzenia sesjiCiasteczka

1 include lti o s t r e a mgt2 using namespace std 34 int main ( )5 cout ltlt Content -typetexthtmlcharset=utf -8

ltlt endl 6 cout ltlt Set-Cookie idSesji=123 ltlt endl ltlt endl 7 cout ltlt lta href=rsquoskrypt2cgi rsquogtWyślij dane ltagt

8

Contentminustype texthtml charset=utfminus8SetminusCookie idSesji=123

lta href=rsquo s k r y p t 2 c g i rsquogtWy ś lij daneltagt

1 include lti o s t r e a mgt2 include lts t d l i b hgt3 using namespace std 45 int main ( int argc char lowastargv [ ] )6 cout ltlt Content -typetextplaincharset=utf -8

ltlt endl ltlt endl 7 cout ltlt Otrzymałem ltlt getenv (

HTTP COOKIE ) 8

Dr inż Stanisław Polak 54 Przedmiot Internet i jego zastosowanie

CGI Usługa WWW

Zalety i wady CGI

ZaletyI ProstotaI Niezależność

I językI architektura

I Izolacja procesoacutewI Możliwość przekazywania

parametroacutew do programoacutewI Nie trzeba modyfikować

przeglądarek

WadyI Mała wydajnośćI Generowanie całości dokumentu

WWWI BezstanowośćI Brak integracji z serwerem

Dr inż Stanisław Polak 55 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

FastCGIOgoacutelny schemat działania

FastCGISerwer WWW

Proces

80 443

Proces

Przeglądarka WWWGET POST

dane

CGISerwer WWW

Proces

80 443 Przeglądarka WWW

GET POSTdane

Dr inż Stanisław Polak 56 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 15: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

FastCGI Usługa WWW

Rodzaje roacutel aplikacji FastCGI

I Respondenty (responders)I Filtry (filters)I Autoryzatory (authorizers)

Dr inż Stanisław Polak 57 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Biblioteki do obsługi FastCGI

Język programowania Nazwa biblioteki URLPerl CGIpm httpperldocperlorg

CGIFasthtmlFCGI httpsearchcpanorg

~skimoFCGI-067Python python-fastcgi httpspypipythonorg

pypipython-fastcgiRuby Ruby-fcgi httpsrubyforgeorg

projectsfcgiC Fastcgi httpwwwfastcgicom

distfcgitargzC++ Fastcgi++ httpwwwnongnuorg

fastcgipp

Dr inż Stanisław Polak 58 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Obsługa protokołu FastCGI przy użyciu serwera Apache

Moduł bdquomod fastcgirdquoI Stworzony przez Open Market ale

obecnie nie jest już rozwijanyI Źroacutedła httpwwwfastcgicomdistmod_fastcgi-currenttargz

I Kategorie aplikacjiI DynamiczneI StatyczneI Zewnętrzne

I Zarządzanie aplikacjamiI Dynamiczne oraz statyczne mdash

menedżer procesoacutew rsquofcgi-pmrsquoI Zewnętrzne mdash program rsquocgi-fcgirsquo

Moduł bdquomod fcgidrdquoI Rozwijany przez ApacheI Strona modułu httphttpdapacheorgmod_fcgid

1 ltIfModule mod_fcgid cgt2 Je ż e l i bę dziemy ko r z y s t a ć z b i b l i o t e k d l a C lub C

++3 FcgidInitialEnv LD_LIBRARY_PATH ś cie żkadoplikuz

bibliotek ąFastCGI4 Alias fcgiminusbin ś cie żkadokatalogufcgiminusbin56 ltDirectory ś cie żkadokatalogufcgiminusbingt7 AllowOverride None8 Options None9 Require all granted

10 SetHandler fcgidminusscript11 Options +ExecCGI12 ltDirectorygt1314 ltIfModulegt1516

confextrahttpd-fcgidconf

Moduł bdquo mod proxy fcgirdquoI Standardowy moduł Apachersquoa począwszy od wersji 24I Umożliwia komunikację z zewnętrznymi aplikacjami FastCGII Uruchamianie aplikacji FastCGI mdash za pomocą programu rsquofcgistarterrsquo

Dr inż Stanisław Polak 59 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Przykładowe skrypty FastCGI

1 include lt f c g i s t d i o hgt lowast b i b l i o t e k af c g i powinna by ć do ł ą czona j akop i e rw s z alowast

2 include lts t d i o hgt3 include lts t d l i b hgt4 int count 5 void initialize ( void ) 6 count=07 8 void main ( void ) 9 lowast I n i c j a l i z a c j a lowast

10 initialize ( ) 11 lowast Pę t l a odpow iedz i lowast12 while ( FCGI_Accept ( ) gt= 0) 13 printf ( Content -type texthtmlrn

rn14 lttitle gtFastCGI Hello (C

fcgi_stdio library)lttitle gt15 lth1gtFastCGI Hello (C fcgi_stdio

library)lth1 gt16 Request number d running on host lt

igtsltigtn 17 ++count getenv ( SERVER_NAME ) ) 18 19

bdquoSkryptrdquo FastCGI w C

1 u s r b i n p e r l2 use CGI Fast qw ( standard ) 3 I n i c j a l i z a c j a4 my $count = 0 5 my $lives = 1 0 0 0 ż y j e p r z e z 1000 ż ąda

ń potem koń czy d z i a ł a n i e6 Pę t l a odpow iedz i 7 while ( my $q = CGI Fastminusgtnew ) 8 print header 9 print start_html ( FastCGI Hello (Perl

) ) 10 Request number ++$count 11 running on host 12 i ( $ENVSERVER_NAME) 13 print end_html 1415 last unless $livesminusminus l i c z n i k czasu ż

y c i a16 last if minusM $ENVSCRIPT_FILENAME lt 0

sprawdzen i e czasu mod y f i k a c j ip l i k u

17

Skrypt FastCGI w Perl-u

Dr inż Stanisław Polak 60 Przedmiot Internet i jego zastosowanieMat

eriał

ydla

studen

toacutew

Infor

mat

yki W

SZiBw

Krako

wie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 16: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

FastCGI Usługa WWW

Wydajność CGI i FastCGI

Plik statyczny FastCGI CGI21ms + 019ms na KB 22ms + 028ms na KB 59ms + 037ms na KB

ZałożeniaI Czas inicjacji połączenia z BD = 50msI Ilość generowanych danych wyjściowych = 5KB

WynikiI CGI 59ms + 50ms + (037ms)(5) = 111msI FastCGI 22ms + (028ms)(5) = 23ms

Dr inż Stanisław Polak 61 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Zalety i wady FastCGI

ZaletyI Elastyczność CGII WydajnośćI Trwałość procesoacutew obsługa wielu klientoacutewI Kompatybilność z CGII Tryb CGII NiezależnośćI Izolacja procesoacutewI Możliwość przetwarzania rozproszonegoI Proces FastCGI pracujący na innym węźleI Prosta migracja

WadyI Konieczność rekonfiguracji serwera

Dr inż Stanisław Polak 62 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

SCGI

I Simple Common Gateway InterfaceI Podobny do FastCGI ale łatwiejszy do implementacji

Dr inż Stanisław Polak 63 Przedmiot Internet i jego zastosowanie

FastCGI Usługa WWW

Interfejsy wysokopoziomowePerl Web Server Gateway Interface

1 my $app = sub 2 my $env = shift 3 return [4 rsquo200rsquo 5 [ rsquoContent -Typersquo =gt rsquotextplainrsquo ] 6 [ Hello World ]7 ] 8

Perl

Web Server Gateway Interface

1 def simple_app ( environ start_response ) 2 start_response ( rsquo200 OKrsquo [ ( rsquoContent -Typersquo rsquotextplainrsquo ) ] )3 return [ rsquoHello Worldnrsquo ]

Python

Rack

1 class HelloWorld2 def call ( env )3 return [ 2 0 0 rsquoContent -Typersquo =gt rsquotextplainrsquo [ Hello world ] ]4 end5 end

Ruby

Dr inż Stanisław Polak 64 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI
Page 17: Usługa WWW Plan prezentacji Usługa  · Usługa WWW Usługa WWW Przedmiot: Internet i jego zastosowanie Dr inż. Stanisław Polak Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Źroacutedła Usługa WWW

Źroacutedła I

I Mark R BrownFastCGI Developerrsquos Kit httpwwwfastcgicomdevkitdocfcgi-devel-kithtm

I The Apache Software FoundationApache HTTP Server Version 22 Documentationhttphttpdapacheorgdocs22

I Steve KrugNie każ mi myśleć O życiowym podejściu do funkcjonalności stron internetowych

Helion wydanie drugie 2006

I NetcraftSeptember 2010 Web Server Surveyhttpnewsnetcraftcom

I Inc Open MarketFastCGI A High-Performance Web Server Interfacehttpwwwfastcgicomdevkitdocfastcgi-whitepaperfastcgihtm

Dr inż Stanisław Polak 65 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła II

I Jarosław RafaGopher umarły świstakhttpwwwwspkrakowplpapersgopherhtml

I Jarosław RafaHyper-G - zapomniany następca WWWhttpwwwwspkrakowplpapershyperghtml

I Breach SecurityModSecurity Reference Manualhttpwwwmodsecurityorgdocumentation

I Cezary SobaniecCommon Gateway Interfacehttpskisrcsputpoznanplsemestr8psiilecpsii_wyklad3_cgipdf

I Tomasz TraczykXFormshttpwwwplougorgplkonf_08materialypdf03_Traczykpdf

Dr inż Stanisław Polak 66 Przedmiot Internet i jego zastosowanie

Źroacutedła Usługa WWW

Źroacutedła III

I Peter WainwrightApache 20 dla zaawansowanychHelion 2004

Dr inż Stanisław Polak 67 Przedmiot Internet i jego zastosowanie

  • Poprawnosc serwisoacutew WWW
  • Protokoacuteł HTTP
  • Serwer Apache
  • CGI
  • FastCGI