• Nie Znaleziono Wyników

WS-Security

W dokumencie OPIS ZASTOSOWANYCH TECHNOLOGII (Stron 19-23)

2. Opis zastosowanych technologii

2.8. WS-Security

• repozytorium PEAR

o zbiór realizujący typowe zadania klas o ujednoliconej budowie.

2.7. Perl

Interpretowany język programowania autorstwa Larry'ego Walla początkowo przeznaczony głównie do pracy z danymi tekstowymi, obecnie używany do wielu innych zastosowań. Wzorowany na takich językach jak C, skryptowe: sed, awk i sh oraz na wielu innych. Perl jest dostępny dla wielu systemów operacyjnych, lecz jego naturalne środowisko to Unix i jego pochodne. Chociaż Perl posiada większość cech języka interpretowanego, nie wykonuje ściśle każdego wiersza kodu źródłowego po kolei. Program jest najpierw kompilowany do kodu pośredniego (podobnie jak Java); jednocześnie dokonywana jest jego optymalizacja. Możliwe jest skompilowanie programu do kodu pośredniego i używanie go zamiast postaci źródłowej, jednak nadal konieczny jest interpreter – program wykonujący.

2.8. WS-Security

Specyfikacja wykorzystująca rekomendacje XML Encryption oraz XML Signature do rozszerzenia funkcjonalności WS o elementy bezpieczeństwa. Protokół początkowo był opracowywany przez Microsoft, IBM, oraz VeriSign – obecnie nad standardem pracuje jeden z komitetów Oasis-Open. WS-Security skupia się na wzbogaceniu komunikacji SOAP o zapewnienie integralności, poufności oraz dołączaniu żetonów bezpieczeństwa do komunikatów. WS-Security umożliwia na korzystanie z Kerberos oraz oczywiście kryptorgrafii publicznej opartej o standard X.509.

WS-Security definiuje bloki nagłówka, których zadaniem jest dostarczanie informacji związanej z bezpieczeństwem. W momencie gdy część komunikatu została podpisana nagłówek WS-Security będzie zawierał informację nt. metody podpisu, wykorzystywanego klucza, czy też właściwego podpisu. Identyfikacja odpowiedniego bloku jest realizowana za pomocą atrybutu wsu:Id unikalnego w ramach komunikatu. Podobnie będzie w przypadku, gdy wybrany element komunikatu zostanie zaszyfrowany – blok Security będzie zawierał odpowiednią informację zgodną ze specyfikacją WS-Encryption. WS-Security nie zajmuje się sposobem podpisywania, czy szyfrowania, a jedynie zawiera informacje umożliwiające właściwe korzystanie dostępnych metod w tym zakresie w momencie zabezpieczania komunikatów SOAP.

Poza pełnieniem roli magazynu metadanych dla użytych metod zabezpieczania – dzięki czemu odbiorca wie, z czego skorzystał odbiorca, WS-Security zawiera również tzw. profile opisujące sposoby załączania żetonów bezpieczeństwa w nagłówku. Jest to mechanizm transmisji credentials wewnątrz bloku nagłówka SOAP. WS-Security udostępnia 2 metody załączania żetonów:

• UsernameToken służący do przekazywania credentials w sposób prosty – <nazwa użytkownika>/<hasło>,

• BinarySecurityToken – do przekazywania biletów Kerberos oraz certyfikatów X.509.

Komunikat SOAP może zawierać wiele bloków dot. bezpieczeństwa, z których każdy może być opatrzony specjalnym atrybutem Actor. Atrybut Actor umożliwia pośrednikom zidentyfikować, które bloki powinni przetwarzać. Wartością atrybutu Actor jest URI pod którym działa dany pośrednik - URI jest zawsze unikalne. De facto ten sam pośrednik może być uruchomiony pod więcej niż jednym URI, co oczywiście oznacza, że może przetwarzać więcej niż jeden blok. Zakłada się, że każdy pośrednik wie pod którym URI został uruchomiony. Specyfikacja dopuszcza, by co najwyżej jeden blok WS-Security nie był opatrzony atrybutem Actor, co oznacza, że odbiorcą tego bloku jest ultimate receiver.

WS-Security wprowadza też specjalny atrybut wsu:TimeStamp wprowadzający mechanizm wygaszania ważności komunikatu, co zabezpiecza usługę przed atakami typu replay – w momencie, kiedy intruz nie jest w stanie zmodyfikować komunikatu (komunikat podpisany).

2.9. LVS

Wysoko skalowalny serwer zbudowany na klastrze fizycznych serwerów, z usługą równoważenia obciążenia (load balancer) przeznaczony dla systemów Linux. Architektura klastru w pełni przezroczysta dla użytkownika końcowego.

2.10. HTML

Hipertekstowy język znaczników, obecnie szeroko wykorzystywany do tworzenia stron internetowych. HTML pozwala opisać strukturę informacji zawartych wewnątrz strony internetowej, nadając znaczenie poszczególnym fragmentom tekstu – formując hiperłącza, akapity, nagłówki, listy – oraz osadza w tekście dokumentu obiekty plikowe np. multimedia bądź elementy baz danych np.

interaktywne formularze danych.

HTML umożliwia określenie wyglądu dokumentu w przeglądarce internetowej. Do szczegółowego opisu formatowania akapitów, nagłówków, użytych czcionek i kolorów, zalecane jest wykorzystywanie kaskadowych arkuszy stylów.

W składni HTML wykorzystuje się pary znaczników umieszczone w nawiasach ostrokątnych, np.

<title> i </title> lub <h1> i </h1>.

HTML pozwala również na osadzanie ciągów instrukcji języków skryptowych, umieszczonych pomiędzy znacznikami <script> i </script>

Należy nadmienić, że HTML, będąc językiem znaczników, nie jest zaliczany do języków programowania – w jego składni nie przewidziano wyrażeń obliczeniowych, warunkowych czy iteracyjnych.

Ważną cechą HTML, która przyczyniła się do popularności systemu WWW oraz Internetu, jest niezależność od systemu operacyjnego i wykorzystywanego sprzętu komputerowego.

Komponenty języka HTML:

• znaczniki (tagi) - stanowią podstawowy komponent języka HTML. Charakteryzują je dwie cechy: atrybuty i zawartość. Każdy atrybut i zawartość musi spełniać określone wymagania, aby dokument został poprawnie zwalidowany pod kątem zgodności ze standardem. Znacznik zwykle rozpoczyna się znacznikiem otwierającym (np. <nazwa-znacznika>), a kończy znacznikiem zamykającym (np. </nazwa-znacznika>). Atrybuty elementu są zawarte w znaczniku otwierającym (po nazwie znacznika), natomiast zawartość umieszczana jest pomiędzy znacznikiem otwierającym i zamykającym. (np. <nazwa-znacznika atrybut="wartość">zawartość</nazwa-znacznika>). Niektóre elementy, np. <br>, nie

posiadają zawartości, a także znacznika zamykającego.

W nomenklaturze polskiej, dotyczącej języka HTML, słowa element używa się do określenia grupy:

o znacznik otwierający, o atrybuty,

o zawartość,

o znacznik zamykający,

• atrybuty - większość atrybutów elementów składa się z par nazwa-wartość, rozdzielonych znakiem "=", zawartych w znaczniku otwierającym elementu, po jego nazwie. Wartość może być zawarta w pojedynczych lub podwójnych cudzysłowach. Przy niektórych wartościach cudzysłowy mogą być pominięte (tylko w specyfikacji HTML, nie XHTML), jednak nie jest to zalecane, a wręcz praktyka taka uznana jest na niebezpieczną. W przeciwieństwie do

atrybutów w postaci par nazwa-wartość istnieją atrybuty mające wpływ na element poprzez samo ich zawarcie w znaczniku otwierającym (np. ismap atrybut dla znacznika img).

Znaczna część elementów może posiadać standardowe dla znaczników atrybuty: id, class, style, title, a także atrybuty związane z językiem lang i dir.

Atrybut id nadaje elementowi unikatowy identyfikator. Może on zostać użyty przez arkusze stylów do sprecyzowania wyglądu tego elementu lub przez skrypty np. do zmiany jego zawartości. Atrybut class służy do sklasyfikowania elementów dla celów prezentacyjnych.

Dokument HTML lub zbiór takich dokumentów może używać klasy class="stopka", sugerując, że powinny być one wyświetlone na dole strony w postaci stopki. Elementy posiadające taką klasę mogą otrzymać styl, dzięki któremu zamiast wyświetlać się w miejscu występowania w kodzie HTML, będą zaprezentowane na dole strony w postaci stopki.

Autor może użyć znacznika style, aby nadać styl konkretnemu elementowi w kodzie HTML.

Dobrą praktyką jest jednak nadanie elementowi unikatowego identyfikatora id, odnosząc się prezentacji tego znacznika w arkuszu stylów. Czasem jest to jednak nieporęczne podczas szybkiego testowania wyglądu elementów. Atrybutu title używa się w celu dodania do elementu informacji tekstowej. W wielu przypadkach zawartość atrybutu title wyświetlana jest w postaci podpowiedzi (tooltip), pojawiającej się na ekranie po najechaniu myszą na dany element,

• encje i referencje znakowe - począwszy od wersji 4.0, HTML definiuje listę 252 encji oraz 1114050 symboli znakowych, pozwalających na zapisanie określonych znaków za pomocą specjalnych stałych. Niektóre znaki można również zapisać dosłownie. Znak wprowadzony dosłownie i jego odpowiednik w postaci określonej stałej uznawane są za równoważne i są identycznie renderowane. Zdolność alternatywnego zapisu znaków specjalnych "<" i "&"

(zapisywanych odpowiednio jako &lt; i &amp;), umożliwia ich interpretację jako zwykłych znaków, zamiast traktowania ich jako istotnych elementów składni języka. Przykładowo, dosłownie zapisany znak "<" wskazuje na początek znacznika otwierającego, a "&" wskazuje na rozpoczęcie ciągu znaków, mającego być zinterpretowanym jako encja lub symbol (referencja znakowa). Zapisanie tego znaku jako "&amp;" lub "&#x26;" lub "&#38;" pozwala na użycie "&" w wartości elementu lub wartości atrybutu. Znak podwójnego cudzysłowu, ", użyty w wartości atrybutu, także musi zostać zapisany jako "&quot;" lub "&#x22;" lub

"&#34;", gdyż wartość atrybutu sama jest opatrzona z obu stron właśnie takimi cudzysłowami (wprowadzonymi do kodu dosłownie). Ponieważ autorzy stron często zapominają o używaniu stałych, przeglądarki stały się pod tym względem bardzo tolerancyjne, traktując znaki wprowadzone dosłownie jako kod, tylko w przypadkach, gdy dalszy ciąg kodu wskazuje na użycie tych znaków jako elementów składni języka.

Alternatywnego zapisu znaków (zwanego także ucieczką, ang. escaping) używa się do wprowadzania symboli, których nie da się łatwo wpisać dosłownie z klawiatury. Np. symbol

"é", wykorzystywany standardowo tylko w klawiaturach zachodnioeuropejskich, może być zapisany jako encja &eacute; lub jako referencja znakowa &#233; lub &#xE9;. Znaki zawarte w referencjach (czyli "&", ";", litery w słowie "eacute" itd.) są dostępne na wszystkich klawiaturach i we wszystkich kodowaniach znaków, podczas, gdy znak "é" – nie,

• typy danych - HTML definiuje kilka typów danych, wprowadzanych jako wartości elementów lub atrybutów. Są to m.in. skrypty (script data), dane arkuszy stylów (stylesheet data), identyfikatory, nazwy, adresy URI, liczby, jednostki miary długości, języki, deskryptory mediów, kolory, kodowania znaków, data i czas, itp.,

• deklaracja typu dokumentu - aby uaktywnić definicję typu dokumentu (DTD) do celów poprawnej walidacji utworzonej strony, a także w celu uniknięcia działania przeglądarek w trybie quirks, dokument powinien rozpoczynać się deklaracją typu dokumentu (nieformalnie DOCTYPE). DTD, do którego odwołuje się sekcja DOCTYPE, zawiera gramatykę i zasady wykorzystywania znaczników w dokumencie podporządkowanemu określonemu DTD.

Większość graficznych przeglądarek korzysta z sekcji DOCTYPE, a także innych dodatkowych informacji, warunkując tryb renderowania danej strony.

2.11. XML

Uniwersalny język formalny przeznaczony do reprezentowania różnych danych w strukturalizowany sposób.

XML jest niezależny od platformy, co umożliwia łatwą wymianę dokumentów pomiędzy heterogenicznymi (różnymi) systemami i znacząco przyczyniło się do popularności tego języka w dobie Internetu. XML jest standardem rekomendowanym oraz specyfikowanym przez organizację W3C.

Mówimy o dokumencie, że jest poprawny składniowo (ang. well-formed), jeżeli jest zgodny z regułami składni XML. Reguły te obejmują m.in. konieczność domykania wszystkich znaczników.

Dokument niepoprawny składniowo nie może być przetworzony przez parser XML.

Mówimy o dokumencie, że jest poprawny strukturalnie (ang. valid), jeżeli jest zgodny z definicją dokumentu, tzn. dodatkowymi regułami określonymi przez użytkownika. Do precyzowania tych reguł służą specjalne języki. Najpopularniejszymi są DTD, XML Schema.

Poprawny składniowo (ang. well-formed) dokument XML powinien być tworzony zgodnie z kilkoma zasadami:

• powinien zawierać deklarację XML, która musi być umieszczona na samym początku pliku (nie może być poprzedzona np. komentarzem) oraz musi posiadać atrybut version (dopuszczalne wartości to 1.0 albo 1.1) oraz opcjonalnie atrybuty:

o encoding – deklaruje zestaw znaków używanych w dokumencie XML, wartością domyślną jest kodowanie UTF-8 w systemie Unicode,

o standalone – określa tryb dokumentu XML, może przyjmować wartość yes lub no.

Jeśli ustawimy wartość na yes to będzie oznaczało, że dokument nie zawiera innych plików, które muszą zostać przetworzone wraz z dokumentem. Może to być np.

zewnętrzny arkusz stylów lub definicja DTD,

• musi zawierać dokładnie jeden element główny (zwany root element), w naszym przypadku elementem głównym jest element o nazwie ksiazka-telefoniczna,

• każdy element musi zaczynać się znacznikiem początku elementu, np. , oraz kończyć identycznym znacznikiem końca elementu np., wyjątek stanowią elementy puste (<element-pusty />), czyli takie, które nie zawierają żadnych danych, ani innych elementów, mogą zawierać atrybuty,

• nazwy elementów mogą zawierać znaki alfanumeryczne (litery a-z, A-Z oraz cyfry 0-9), znaki ideograficzne (ą, ó, ń, jednak należy unikać takich konstrukcji[potrzebne źródło]) oraz 3 znaki interpunkcyjne (podkreślenie _, łącznik -, kropka.). Znak dwukropka zarezerwowany jest dla identyfikacji przestrzeni nazw, której nazwa dopisywana jest przed nazwą elementu np.

<przestrzeń1:element>,

• nazwy elementów nie mogą zaczynać się od znaku łącznika -, kropki, czy cyfry. Dodatkowo nie mogą zaczynać się od xml, XML, xML itp. (wielkość liter bez znaczenia),

• elementy można zagnieżdżać w sobie i wtedy każdy element znajdujący się wewnątrz innego elementu jest nazywany "dzieckiem" tego elementu, a element, wewnątrz którego znajdują się inne elementy, zwany jest "rodzicem" tych elementów. W naszym przypadku element

<newsy> jest rodzicem elementu <news>, element <news> jest dzieckiem elementu

<newsy>, a zarazem rodzicem elementów , <autor>, <e-mail>, <tresc>. Nie można stosować konstrukcji takiego typu: <news><tresc></news></tresc>, ponieważ element <tresc> nie jest prawidłowo zagnieżdżony w elemencie <news>,

• każdy element może zawierać atrybuty, które definiuje się w znaczniku początku elementu, np. atrybutem elementu <news potw="yes"> jest atrybut o nazwie potw oraz wartości yes.

Wartości atrybutów podaje się w cudzysłowach albo apostrofach (pojedynczych cudzysłowach),

• informacje, które zawiera element, muszą być zapisane pomiędzy znacznikiem początku i końca elementu,

• w danych, atrybutach oraz nazwach elementów nie mogą pojawiać się niektóre znaki.

Przykładem może być znak mniejszości (<), lub ampersand (&). Znaków tych nie można używać, ponieważ parsery XML "widząc" np. znak mniejszości wewnątrz elementu stwierdzą, że jest to początek znacznika i dokument zostanie błędnie zinterpretowany. Specyfikacja XML daje możliwość używania takich znaków z wykorzystaniem predefiniowanych odniesień jednostki. Jeśli np. chcemy wstawić znak mniejszości (<), wpisujemy zamiast niego sekwencję

&lt; znak ampersand – &amp;, znak większości (>) - &gt;,

• jeżeli nie chcemy używać predefiniowanych odniesień jednostek, możemy część danych, które zawierają np. kod html lub xml, zapisać w sekcji danych znakowych, która nie będzie przetwarzana przez analizator składni XML. Znacznik początku sekcji danych znakowych to:

<![CDATA[, a znacznik końca: ]]>,

• w dokumencie XML możemy wykorzystywać komentarze, które zaczynają się znakami: <!--,, a kończą: -->. Przykład: <!-- To jest komentarz -->,

• specyfikacja XML zezwala na wstawianie instrukcji przetwarzania, które są wykorzystywane do przeniesienia informacji do aplikacji. Instrukcje przetwarzania rozpoczynają się znakami:

<?, a kończą: ?>. Przykładem takiej instrukcji może być odniesienie do arkusza stylów, który jest powiązany z dokumentem XML: <?xml-stylesheet type="text/xsl" href="newsy.xsl"?>.

2.12. Ajax

Technika tworzenia aplikacji internetowych, w której interakcja użytkownika z serwerem odbywa się bez przeładowywania całego dokumentu, w sposób asynchroniczny. Ma to umożliwiać bardziej dynamiczną interakcję z użytkownikiem niż w tradycyjnym modelu, w którym każde żądanie nowych danych wiąże się z przesłaniem całej strony HTML. Na technikę tę składa się parę elementów:

• XMLHttpRequest - klasa umożliwiająca asynchroniczne przesyłanie danych; dzięki asynchroniczności w trakcie pobierania danych użytkownik może wykonywać inne czynności, można także pobierać dane jednocześnie z wielu miejsc,

• JavaScript

• XML

W dokumencie OPIS ZASTOSOWANYCH TECHNOLOGII (Stron 19-23)

Powiązane dokumenty