Nr 7/1999 (7), Serwisy WWW. Artykuł |
Urszula Puszkiewicz
| |||
Witryny informacyjne bibliotek weszły na trwałe w pejzaż polskiej sieci, stanowiąc poważne źródło informacji o zasobach bibliotecznych i samych bibliotekach. Z reguły na ich utrzymanie decydują się ośrodki, które udostępniają w sieci rozległej katalogi online i specjalizowane bazy danych. Na dyskach serwerów bibliotecznych, przyłączonych do Internetu, instaluje się odpowiednie oprogramowanie serwera WWW, zarządzające dokumentami przeznaczonymi do publikacji w sieci. Podstawowe zadania serwera Web dotyczą obsługi zleceń klientów - przeglądarek, za pośrednictwem których użytkownicy penetrują zasoby informacji, zgromadzone w pajęczynie WWW. Serwer odpowiada na zapytania klientów, wyszukuje żądane pliki, uruchamia programy, realizuje zlecenia, których wyniki przekazywane są do wyświetlenia w oknach przeglądarek. Funkcje serwera WWW może pełnić każdy komputer podłączony do Internetu, ponieważ opracowano różne wersje oprogramowania serwera WWW na różne platformy systemowe (np. Unix, Windows 95/98, Windows NT, Macintosh, Novell Netware). Wśród oprogramowań kilku czołowych producentów najpopularniejszym w sieci jest serwer Apache korporacji The Apache Software Foundation (ASP), publicznie dostępny pod adresem http://www.apache.org/ , gdzie można skopiować odpowiednią wersję instalacyjną programu, zapoznać się z dokumentacją, warunkami licencji, itd. Wszystkie przykłady w artykule związane z konfiguracją serwera WWW do obsługi skryptów CGI i zleceń SSI dotyczyć będą serwera Apache. Serwery i przeglądarki WWW komunikują się między sobą używając protokołu przesyłania hipertekstu HTTP (HyperText Transfer Protocol), wykorzystującego jednolity schemat adresowania zasobów w sieci - tzw. identyfikator URL (Uniform Resource Locator). Schemat URL opisuje sposób, w jaki przeglądarka może sięgnąć danego obiektu w sieci, ściślej: jakiego protokołu, adresu komputera i ścieżki dostępu ma użyć do odnalezienia zasobu w Internecie. HTTP przesyła otwarte teksty, nie zabezpieczone i nie szyfrowane. W zastosowaniach komercyjnych, szczególnie przy obsłudze transakcji płatniczych, do kodowania protokołów bazujących na otwartych tekstach wykorzystuje się specjalny protokół SSL (Secure Socket Layer), szyfrujący - m.in. HTTP - na postać binarną. Dokumenty WWW tworzy się przy użyciu języka opisu hipertekstu HTML (HyperText Markup Language). HTML określa zbiór reguł składniowych opisujących wygląd i strukturę dokumentów wraz z odsyłaczami w systemie WWW, jest więc specjalnym językiem formatowania tekstu - językiem adjustacyjnym. Definiowaniem standardów i specyfikacji HTML oraz technologii pokrewnych zajmuje się organizacja W3C (International World-Wide-Web Consorcium), skupiająca liczne zespoły naukowe, a także firmy przemysłu informatycznego (m.in. Netcsape i Microsoft), inwestujące w rozwój przeglądarek i rozszerzenia języka, mające zasadniczy wpływ na kierunki rozwoju HTML. Strony konsorcjum dostępne są pod adresem http://www.w3.org/, gdzie publikowane są specyfikacje poszczególnych wersji języka HTML ( HTML 2.0, HTML 3.2, HTML 4.0, HTML 4.01 Proposed Recommendations i XHTML 1.0). System WWW bazuje na technologii hipertekstu, to jest technologii stanowiącej metodę dynamicznego (niesekwencyjnego) gromadzenia, wyszukiwania i udostępniania wiedzy, gdzie dane reprezentowane są w węzłach, a powiązania między nimi tworzą połączenia (odsyłacze). Jeżeli w węzłach przechowuje się dane tekstowe - wówczas określane są mianem hipertekstu, natomiast jeśli wezły przechowują takie obiekty, jak tekst, obraz, dźwięk, animację wówczas nazywane są hipermedium. Technologie hipertekstu rozwijano już od 1945 roku. Za twórcę systemów hipertekstowych uważa się V. Bush'a, który teoretyczne rozważania na temat nieliniowej struktury tekstu przedstawił w koncepcyjnym systemie Memex, zakładającym przechowywanie informacji na mikrofilmach. Do równoległego przeglądania kilku mikrofilmów jednocześnie służyć miał wielofunkcyjny czytnik, z wbudowanym scanerem do wprowadzania różnych materiałów do systemu, np. tekstu pisanego ręcznie. Projekt nie doczekał się realizacji praktycznej. Pojęcia hipertekst jako pierwszy użył w 1965 roku Ted Nelson, pracujący nad rozproszoną bazą danych, gdzie dostęp do danych (publikacji wydawniczych) zapisanych na dysku komputera, miał się odbywać za pośrednictwem sieci.
Systemy hipertekstowe rozwijano w wielu pracach badawczych, ich
największy rozwój przypadł na drugą połowę lat osiemdziesiątych.
Obecnie dzieli się je na dwie podstawowe grupy: Projekt systemu WWW (World Wide Web) przedstawił w CERN-ie (European Particle Physics Laboratory - Europejskie Laboratorium Fizyki Cząstek) Tim Berners w roku 1989. Projekt ten został udoskonalony w roku następnym we współpracy z Robertem Cailliau: umożliwiono wtedy dostęp do istniejącej informacji na dysku serwera bez konieczności przekształcania jej do nowego formatu. Opracowano system zawierający przeglądarkę, serwer informacyjny i bibliotekę dla programistów, który przekazano do wykorzystania środowiskom badawczym, głównie fizykom i innym naukowcom, pracującym nad systemami hipertekstowymi. W 1993 r. NCSA (National Center for Supercomputing Applications - Narodowe Centrum Zastosowań Superkomputerów w Stanach Zjednoczonych) opracowało przeglądarkę Mosaic, pracującą w środowisku X Windows. Pojawienie się nowej przeglądarki (opracowano także wersje dla komputerów PC i Macintosh), działającej w środowisku graficznym, miało natychmiastowy wpływ na rozpowszechnienie się WWW. Do końca 1993 roku, według badań CERN, sieć WWW stanowiła zaledwie 1% ruchu w sieci. W latach następnych WWW całkowicie zdominowało Internet, stając się najbardziej rozpowszechnioną, obok poczty elektronicznej, usługą sieciową. O sukcesie WWW zadecydowała przede wszystkim integracja różnorodnych protokołów sieciowych z poziomu przeglądarki (adresacja URL), wykorzystująca różnorodne formy dostępu do zasobów sieciowych. Początkowo strony WWW, ze względu na niskie prędkości transmisji połączeń modemowych, oprócz zbioru odsyłaczy (hiperprzełączników) do innych zasobów w sieci, zawierały porcje tekstu i niewiele grafiki. Wraz z rozwojem połączeń sieciowych i zwiększaniem ich przepustowości, a także rozwojem nowych trendów w technologii informacyjnej, takich jak multimedia, masowe przechowywanie danych, integracja technologii, optyczne skanowanie dokumentów, masowy rozwój pamięci, zmienił się sposób projektowania serwisów WWW, które w znacznej mierze oprócz funkcji informacyjnej, uwzględniającej atrakcyjny sposób prezentacji danych, kładą nacisk na obustronną, komunikację z użytkownikiem - interakcję. Aby strona WWW była w pełni interakcyjna musi być w stanie wymieniać informację z użytkownikiem. Do osiągnięcia tego celu wykorzystuje się formularze HTML, które połączeniu z ze skryptami CGI, przetwarzającymi wprowadzone przez użytkowników informacje, pozwalają na zaprojektowanie automatycznych (dwukierunkowych) mechanizmów gromadzenia i dystrybucji informacji. W systemie WWW wszelkiego rodzaju zamówienia towarów i usług, kwestionariusze, ankiety, zapytania do bazy danych realizuje się poprzez odpowiednio zaprojektowane formularze, które komunikują się z programami wykorzystującymi protokół CGI. Interfejs CGI (Common Gateway Interface) wykorzystuje się w skryptach napisanych w dowolnym języku programowania (np. C/C++, Perl lub języku powłoki) - programach, które zajmują się odbiorem informacji z formularzy HTML i udzielaniem odpowiedzi na nie. Ponieważ krypty CGI potrafią samodzielnie tworzyć dokumenty HTML, strony WWW opracowane przy ich użyciu są w pełni dynamiczne. Formularz HTML jest zbiorem pól, w których użytkownicy mogą wprowadzać informacje, które następnie są przesyłane do serwera (faktycznie skryptu CGI) lub bezpośrednio na wskazane konto pocztowe. W formularzach można wykorzystać wiele typów pól zgodnie ze specyfikacją HTML. Poniżej przedstawiono podstawowe rodzaje pól, za pomocą których najczęściej zbiera się informacje od użytkowników. W przykładach posłużono się metodą POST, która podejmuje akcję przesłania danych z formularzy na wskazany adres email (w tym wypadku autorki artykułu). Informacje przekazywane są w formie dołączonego do listu załącznika - pliku POSTDATA.ATT. Zawartość pliku POSTDATA.ATT reprezentuje postać odebranych danych dla wartości domyślnych poszczególnych formularzy. Podstawe rodzaje pól w formularzach HTML:
Zaprezentowana metoda odbierania danych z formularzy HTML pocztą elektroniczną, stanowi alternatywne rozwiązanie wobec braku możliwości pisania lub obsługi w systemie skryptów CGI. Komunikacja przebiega jednostronnie od użytkownika do odbiorcy, który jest właścielem konta pocztowego. W celu zautomatyzowania odpowiedzi potwierdzających odbiór wiadomości, najlepiej jest skonfigurować osobne konto pocztowe i wykorzystać funkcje automatycznych sekretarek w programach pocztowych (w systemach unixowych wykorzystuje się w tym celu program vacation), wysyłających pocztą zwrotną komunikaty potwierdzające przyjęcie listów. Do odbioru danych z formularzy w praktyce bazuje się jednak na skryptach CGI, które wykorzystują w zależności od przyjetej metody wysłania danych GET lub POST, specjalne zmienne środowiskowe QUERY_STRING lub CONTENT_LENGHT, obsługujące proces komunikacji. Pisanie skryptów wymaga umiejętności programowania. Wśród całej gamy języków programowania, wykorzystywanych do tworzenia aplikacji w systemie WWW (np. C/C++, PERL, JAVA, VRML) i skryptów, do zostosowań bibliotecznych świetnie nadaje się język PERL (Practical Extraction and Report Language), który wyróżnia się prostotą wykonywania operacji na dużych plikach tekstowych i umożliwia dostęp do prawie wszystkich funkcji systemu operacyjnego. Aby skorzystać z możliwości komunikacji poprzez skrypty CGI należy odpowiednio zmodyfikować jeden z plików konfiguracyjnych serwera WWW - access.conf, sterujący dostępem do zasobów serwera. W access.conf należy wskazać nazwę katalogu, w którym będą przechowywane skrypty cgi, powinny znaleźć się w nim uaktywnione polecenia:
<Directory /cgi-bin> Opcje Indexes i FollowSymLinks pozwalają na przeglądanie katalogu cgi-bin i przechodzenie do łącz symbolicznych, natomiast opcje Includes i ExecCGI pozwalają na uruchamianie skryptów CGI i innych aplikacji systemowych, w tym również zleceń SSI (o czym w dalszej części artykułu). Metoda pobierania danych z formularza HTML do skryptu CGI, który zbiera dane, dokonuje konwersji polskich znaków, zapisuje informacje w bazie danych i w odpowiedzi odsyła dynamicznie tworzoną stronę WWW, została zaprezentowana w przykładach poniżej. Formularz 6 podejmuje akcję przesłania danych do skryptu wykorzystując metodę GET, która dodaje do końca adresu URL skryptu - wskazanego w atrybucie ACTION - znak zapytania (?), a za nim informacje wprowadzone przez użytkowników. Wszystko, co występuje po znaku zapytania zapamiętywane jest w zmiennej środowiskowej QUERY_STRING. Każde pole danych jest rozdzielane znakiem ampersandu (&), po którym występuje nazwa pola (atrybut NAME w formularzu), znak równości (=) i dane użytkownika. Znaki odstępu pomiędzy wyrazami zastępowane są znakiem plus (+). Skrypt CGI (program w języku PERL), analizuje zawartość zmiennej QUERY_STRING i podejmuje kolejne kroki przetwarzające dane, co zostało objaśnione w komentarzach skryptu - komentarze poprzedzono znakiem hash (#). W programie, wiele miejsca poświęcono konwersji polskich znaków (ogonków) i znaków specjalnych, które są specjalnie kodowane przez przeglądarkę - w postaci 3 znaków (np. litera Ń zapisywana jest jako %D1). Znak powrotu karetki (użycie klawisza Enter w polu danych) kodowany jest jako łańcuch %0D%0A. Metoda GET jest bardzo użyteczna, ale nie można jej stosować w przypadku rozbudowanych form, przyjmujących duże ilości informacji. W tym celu wykorzystuje się metodę POST, która także wysyła ciąg danych doklejony do adresu URL, przekierowany dalej na standardowe wejście STDIN. Metoda POST korzysta dodatkowo ze zmiennej CONTENT_LENGHT, określającej maksymalną liczbę bajtów czytanych ze strumienia STDIN. W filozofii CGI kryją się mało bezpieczne elementy, szczególnie w operacjach, które przejmują dane z formularzy i zapisują je w plikach, z prawami zapisu dla grupy użytkowników WWW. Stanowi to potencjalne zagrożenie i dziurę w systemie, gdyż w końcu anonimowi użytkownicy WWW mogą w ten sposób przekazać do pliku polecenia systemowe, odwołujące się do jądra systemu. Dlatego też skrypty CGI powinny być dokładnie sprawdzane pod kątem procedur tworzenia i zapisywania plików, uruchamiania poleceń systemowych. W celu zwiekszenia bezpieczeństwa stosuje się interfejs API (Application Program Interfaces) dla serwera WWW. Programowanie w użyciem API jest znacznie trudniejsze niż pisanie skryptów CGI, lecz rozwiazuje problem wydajności i bezpieczeństwa CGI. W dokumentach HTML oprócz formularzy z odwołaniami do skryptów można umieszczać specjalne zlecenia SSI (Server-Side-Include), które zastępują programowanie CGI i pozwalają zaoszczędzić sporo czasu przeznaczonego na pisanie i testowanie programów. SSI wykorzystuje się głównie do tworzenia dynamicznych stron WWW, prezentujących informację wyprowadzoną z systemu (z dysku serwera). Dokumenty HTML zawierające zlecenia SSI powinny być zapisywane z rozszerzeniem .shtml, chociaż spotyka się także konwencję zapisu z rozszerzeniem .ssi, co może spowodować nieprawidłową reakcję przeglądarek, zwłaszcza przeglądarki Internet Explorer. Serwer WWW, dzięki odpowiedniemu rozszerzeniu nazwy pliku, jest informowany o tym, że znajdują się w nim zlecenia SSI, które musi wykonać i rezultaty odesłać przeglądarce. Jeśli zlecenie SSI jest niepoprawnie zdefiniowane, wówczas przeglądarka wyświetli komunikat błędu. Udostępnienie usługi SSI wymaga odpowiedniej modyfikacji dwóch plików konfiguracyjnych serwera WWW: srm.conf i access conf . W pierwszym z nich należy umieścić wiersz polecenia które informuje serwera o tym, jakie rozszerzenia w nazwie będą miały pliki zawierające zlecenia SSI. AddType text/x-server-parsed-html .shtml Gdyby zamiast rozszerzenia .shtml administrator umieścił rozszerzenie .html wówczas serwer anlizować będzie wszystkie dokumenty .html jako zawierajace zlecenia SSI, co znacznie spowolni jego pracę. W pliku konfiguracyjnym access.conf należy umieścić wiersz omawianego przy skryptach CGI parametru Options Includes ExecCGI. Zlecenia SSI mają postać specjalnie sformatowanych komentarzy HTML, które serwer zbiera i używa jako poleceń dodania informacji do dokumentu, w miejscu, gdzie są umieszczone. Komentarz w HTML umieszcza się pomiędzy znacznikami : <!-- komentarz --> Składnia zleceń SSI w znacznikach komentarza jest następująca: <#polecenie parametr(y)="argument"--> W tabeli poniżej omówiono podstawowe zlecenia SSI i ich działanie:
Uruchomienie usługi SSI zwiększa ryzyko złamania zabezpieczeń serwera, w sytuacji gdy serwer WWW obsługuje strony .shtml, napisane przez innych użytkowników lub podłożone przez hackerów, którzy mogą wykorzystywać zlecenia systemowe do przejmowania informacji poufnej. Stąd też wielu administratorów blokuje dostęp do SSI, a także CGI. Literatura:
Pierwotny adres: http://www.oss.wroc.pl/biuletyn/ebib07/3_puszkiewicz.html |
| |||