Plan prezentacji: Bezpieczeństwo systemów komputerowych.



Podobne dokumenty
DTD - encje ogólne i parametryczne, przestrzenie nazw

EDI, XML i ochrona danych Przemysław Kazienko

XML w bazach danych i bezpieczeństwie

Rola języka XML narzędziem

Przykładowy dokument XML

Wprowadzenie do technologii XML

LABORATORIUM 5 WSTĘP DO SIECI TELEINFORMATYCZNYCH WPROWADZENIE DO XML I XSLT

Inżynieria biomedyczna

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema. Elementy czy atrybuty? Wartości domyślne i ustalone. Elementy czy atrybuty?

Język XML Schema. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

- wewnątrz elementów prostych występuje tylko jeden typ danych, wewnątrz złoŝonych nie moŝemy dokładnie określić liczby wystąpień elementu

XML DTD XML Schema CSS

XML w bazach danych i bezpieczeństwie

XML i nowoczesne technologie zarządzania treścią

29. Poprawność składniowa i strukturalna dokumentu XML

extensible Markup Language, cz. 4 Marcin Gryszkalis, mg@fork.pl

Plan dzisiejszego wykładu. Narzędzia informatyczne w językoznawstwie. XML - Definicja. Zalety XML

Podstawy języka XML. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Definicja struktury danych XSD dla opisu wzorów dokumentów elektronicznych przyjmowanych w Centralnym Repozytorium Dokumentów

Technologie zarządzania treścią

Rozproszone systemy internetowe. Bezpieczeństwo usług WWW

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

Kurs WWW Język XML, część I

Komunikacja i wymiana danych

Extensible Markup Language (XML) Wrocław, Java - technologie zaawansowane

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

Dokument poprawnie sformułowany jest zgodny z ogólnymi zasadami składniowymi:

Podstawowe konstrukcje Podstawowymi konstrukcjami są wzorce element oraz attribute:

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

WYKŁAD 1 METAJĘZYK SGML CZĘŚĆ 1

XML extensible Markup Language. Paweł Chodkiewicz

Plan prezentacji DTD. Wiązanie DTD z dokumentem XML Deklaracja typu dokumentu. Co to jest DTD. Wstęp. Przedmiot: XML i jego zastosowania

Programowanie komponentowe

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

extensible Markup Language, cz. 1 Marcin Gryszkalis, mg@fork.pl

Web Services. Bartłomiej Świercz. Łódź, 2 grudnia 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz Web Services

Część I -ebxml. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

Bezpieczeństwo dokumentów XML

XML Schema. Typy proste, wyprowadzanie typów, modularyzacja schematu. Patryk Czarnik. Instytut Informatyki UW

Dlaczego GML? Gdańsk r. Karol Stachura

Ministerstwo Finansów Departament Informatyki

XML Schema. Bartłomiej Świercz. Łódź, 19 listopada 2005 roku. Katedra Mikroelektroniki i Technik Informatycznych. Bartłomiej Świercz XML Schema

Ministerstwo Finansów

5.14 JSP - Przykład z obiektami sesji Podsumowanie Słownik Zadanie... 86

Ministerstwo Finansów Departament Informatyzacji Usług Publicznych

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD, XML Schema. Struktura logiczna dokumentu XML. Składnia XML. Encje predefiniowane.

Zasady Nazewnictwa. Dokumentów XML Strona 1 z 9

GML w praktyce geodezyjnej

MINISTERSTWO SPRAW WEWNĘTRZNYCH I ADMINISTRACJI DEPARTAMENT INFORMATYZACJI

XPath XML Path Language. XPath. XSLT część 1. XPath data model. Wyrażenia XPath. Location paths. Osie (axes)

Rok akademicki: 2013/2014 Kod: ZZIP IN-s Punkty ECTS: 2. Kierunek: Zarządzanie i Inżynieria Produkcji Specjalność: Informatyka w zarządzaniu

BAZY DANYCH. Dr hab. Sławomir Zadrożny, prof. PR

Spis treści Informacje podstawowe Predykaty Przykłady Źródła RDF. Marek Prząda. PWSZ w Tarnowie. Tarnów, 6 lutego 2009

Jak wygląda XML? Definiowanie typów dokumentów. Struktura logiczna dokumentu XML. Podstawy składni XML. Definiowanie języków. Poprawność dokumentów

mgr inż. Jacek Staniec Język XML

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

Format danych adnotacji do tytułów wykonawczych przekazywanych do organów egzekucyjnych przez epuap w związku ze zbiegiem egzekucji

Typy przetwarzania. Przetwarzanie zcentralizowane. Przetwarzanie rozproszone

Projektowanie obiektowe oprogramowania Wykład 14 Architektura systemów (1), Interoperability Wiktor Zychla 2013

XML w sosie własnym. Standard XML wraz z DTD, przestrzenie nazw, projektowanie struktury dokumentów. Patryk Czarnik. Instytut Informatyki UW

Aplikacje internetowe laboratorium XML, DTD, XSL

XML Schema. Motywacja, struktura schematu, typy złożone. Patryk Czarnik. Instytut Informatyki UW

c TP: anything: 13 listopada 2004 roku 1

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Rozproszone systemy Internetowe

Wprowadzenie do XML schema

Model semistrukturalny

LAB 7. XML EXtensible Markup Language - Rozszerzalny Język Znaczników XSD XML Schema Definition Definicja Schematu XML

Elastyczna ochrona w elektronicznej wymianie danych

Simple Object Access Protocol

XML extensible Markup Language. część 3

Schematy XML. Tomasz Traczyk.

Plan prezentacji. Krótko o XML Arkusze stylów XSLT XSL XSL Path Przegląd konstrukcji języka i przykłady Narzędzia Podsumowanie Literatura

Prezentacja i transformacja

Wprowadzenie do XML. Tomasz Przechlewski

CENTRUM PROJEKTÓW INFORMATYCZNYCH MINISTERSTWA SPRAW WEWNĘTRZNYCH I ADMINISTRACJI

Definiowanie typów dokumentów Część 2. Przestrzenie nazw, XML Schema

XML w elektronicznej wymianie danych, integracji aplikacji i bezpieczeństwie

Jak bezpieczne są Twoje dane w Internecie?

Język XSLT. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz. UEK w Krakowie Janusz Stal & Grażyna Paliwoda-Pękosz

XML Path Language (XPath)

Elektroniczna wymiana danych (EDI) jest to: - wymiana informacji pomiędzy komputerami, z użyciem powszechnie akceptowanych standardów

Zasady budowy i przekazywania komunikatów wykorzystywanych w Systemie IT KDPW_CCP

Programowanie internetowe

Usługi WWW. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska Opole zlipinski@math.uni.opole.pl

Jak wygląda XML? Definiowanie typów dokumentów Część 1. DTD. Struktura logiczna dokumentu XML. Podstawy składni XML. Definiowanie języków

INFORMATYKA Pytania ogólne na egzamin dyplomowy

WYKŁAD 2 DTD DOCUMENT TYPE DEFINITION CZĘŚĆ 1

Programowanie Komponentowe WebAPI

XQuery. XQuery. Przykład. dokument XML. XQuery (XML Query Language) XQuery 1.0: An XML Query Language. W3C Recommendation

Specyfikacja HTTP API. Wersja 1.6

Wykład 2 xaml, cz Czym jest xml?

Wprowadzenie do PKI. 1. Wstęp. 2. Kryptografia symetryczna. 3. Kryptografia asymetryczna

Pakiet XML Czym jest i z czym się je?

Środowisko XML (Extensible Markup Language).

KARTA KURSU. Przetwarzanie dokumentów XML i zaawansowane techniki WWW

Transkrypt:

Bezpieczeństwo systemów komputerowych. Temat seminarium: Bezpieczny XML Autorzy: Piotr Sasak, Wojciech Śronek Plan prezentacji: - nowa technologia: XML - DTD opis struktury dokumentu XML - XML Schema zaawansowany opis dokementu XML - XMLPath - XMLLInk - XML Signature - XML Encryption - Web Services 1

Początek XML'a - oficjalny dokument definiujący XML: luty 1998 XML powstał z myśl ą o sieci Internet i dla sieci Internet, aczkolwiek obszary jego zastosowa ń wykraczaj ą poza t ę sieć. XML na poważnie - XML nie jest nowy, - XML jest językiem tekstowym, - XML jest rozszerzalny, - XML jest elastyczny, - XML jest międzynarodowy, - XML sam si ę opisuje - XML to rodzina języków i technologii, - XML to standard otwarty, - XML jest nielicencjonowany, - XML jest niezależny od platformy, - XML jest sformalizowany - XML jest hierarchiczny, - XML umożliwia oddzielenie treści od formy jej prezentacji - XML jest modułowy XML nie jest językiem programowania, ale sposobem tekstowego zapamiętywania informacji czy co ś jeszcze można powiedzieć o XML'u? 2

DTD - podstawowe deklaracje wykorzystywane w DTD: <!DOCTYPE...> określa typ dokumentu i zawiera lub wskazuje definicje typu dokumentu, <!ENTITY...> definiuje jednostki, dzięki którym można jeden raz zdefiniować pewien fragment dokumentu, a potem wielekrotnie si ę do niego odwoływać, <!NOTATION...> definiuje notacje, poprzez które można określić typy danych zewnętrznych, <!ELEMENT...> deklaruje element(opisuje zawartość elementu), <!ATTLIST...> deklaruje list ę atrybutów elementu, <![IGNORE [..]> umo liwia odpowiednio wył czenie i wł czenie do przetwarzania ż ą ą <![INCLUDE[.]> pewnych fragmentów dokumentu. 3

DTD - instrukcje przetwarzania(processing instruction PI) zawieraj ą informacje potrzebne dla programów przetwarzających dokument XML. Dla odróżnienia od zwykłego elemntu instrukcje przetwarzania s ą umieszczaje w bloku ograniczonym znakami <? i?> Instrukcje te zawieraj ą cel(pitarget) oraz instrukcje do wykonania. Celem jest słowo kluczowe identyfikujące aplikacj ę, dla której przeznaczona jest instrukcja do wykonania. Jeśli cel nie jest znany aplikacji przetwarzającej dokument, wtedy cała instrukcja zostanie pominięta. Np: <?php for ( $e = 0; $e < $n; $e++) { $tab[ $e ] = $e + 10; }?> Instrukcje przetwarzania umożliwiaj ą umieszczenie w dokumentach XML fragmentów innych języków, zwłaszcza języków programowania. Entity jednostki <!ENTITY XML extensible Markup Language > użycie jednostki w dokumencie XML: <opis>to jest tekst o XML czyli o &XML;.</opis> 4

- tworzenie DTD DTD Np: wewnętrzne DTD składa si ę z wielu deklaracji zgrupowanych w jeden blok zwany deklaracj ą typu dokumentu. Blok ten zaczyna si ę od slowa kluczowego DOCTYPE. <?xml version= 1.0 encoding= UTF-8 > <!--komentarz dokumentu XML zawieraj?cy na poczatku wewn?trzne DTD--> <!DOCTYPE opis [ <!ELEMENT opis (#PCDATA)> <!--dalsze deklaracje DTD --> ]> <!--w?a?ciwy dokument XML --> <opis> To jest opis. </opis> Powyższy przykład prezentuje dokument XML (typu opis) wraz z DTD umieszczonym na początku dokumentu. Wewnętrzne DTD musi być przetworzone przez parser XML, nie ma możliwości omininięcia wewnętrznej deklaracji typów dokumentu. Element zadeklarowany w DOCTYPE (w przykladzie to opis) to główny element dokumentu korze ń. W treści dokumentu XML element korze ń może wystąpić tylko jeden raz. 5

- tworzenie DTD DTD Np: zewnętrzne DTD -lepsza metoda, plik z opsem DTD znajduje si ę w zewnętrznym pliku. W dokumencie XML jest tylko odwołanie do tego pliku. Zewnętrzne DTD może być prywatne lub publiczne. <?xml version= 1.0 encoding= UTF-8 > <!--komentarz dokumentu XML zawieraj?cy na poczatku wewn?trzne DTD--> <!ELEMENT opis (#PCDATA)> <!--dalsze deklaracje DTD --> <?xml version= 1.0 encoding= UTF-8 > <!--w?a?ciwy dokument XML, odwo?anie do zewn?trznego pliku z DTD --> <!DOCTYPE opis SYSTEM opisdtd.dtd > <opis> To jest opis. </opis> Słowo kluczowe SYSTEM oznacza DTD prywatne a słowo kluczowe PUBLIC DTD publiczne. 6

- deklaracje elementów DTD - słowo kluczowe ELEMENT, nazwa danego elementu czyli nazwa znacznika, słowa lub grupy słów definiujących jego zawartość, Zawartość elementu moze być zadeklarowana jako: - (#PCDATA) oznacza zawartość tekstowa (dowoln ą), - EMPTY określa element pusty (pozbawiony treści), - ANY deklaruje, że element może zawierać dowolne wartości Element może być zadeklarowany tylko jeden raz. Np: <!ELEMENT kotek (#PCDATA)> <!ELEMENT kotek EMPTY> <!ELEMENT kotek ANY> <kotek>to jest kotek.</kotek> <kotek/> lub <kotek></kotek> <kotek>to jest kotek.</kotek> lub <kotek/> lub <kotek></kotek> 7

- deklaracje podelementów DTD - model grupy(elementowy) otoczony jest nawiasami i zawiera przynajmniej jeden symbol (token) opisujący podelement danego elementu: <!--element uczelnia sk?ada si? z dok?adnie jednego podelementu rektor--> <!ELEMENT uczelnia (rektor)> <!ELEMENT rektor (#PCDATA)> <!--przyk?ad u?ycia ww. Deklaracji w dokumencie--> <uczlenia> <rektor> Jak Kowalski </rektor> </czelnia> - sekwencja podelementów: <?xml version= 1.0?> <!DOCTYPE uczelnia [ <!ELEMENT uczelnia ( nazwa, rektor, profil)> <!ELEMENT nazwa (#PCDATA)> <!ELEMENT rektor (#PCDATA)> <!ELEMENT profil (#PCDATA)> ]> 8

- deklaracje podelementów - wybór podelementów: DTD <?xml version= 1.0?> <!DOCTYPE uczelnia [ <!ELEMENT uczelnia ( nazwa rektor profil)> <!ELEMENT nazwa (#PCDATA)> <!ELEMENT rektor (#PCDATA)> <!ELEMENT profil (#PCDATA)> ]> - połączenie sekwencji i wyboru podelementów: <?xml version= 1.0?> <!DOCTYPE uczelnia [ <!ELEMENT uczelnia ( nazwa, rektor, ( wydzial inna jednostka ) ) > <!ELEMENT nazwa (#PCDATA)> <!ELEMENT rektor (#PCDATA)> <!ELEMENT wydzia? (#PCDATA)> <!ELEMENT inna jednostka (#PCDATA)> ]> - wskaźniki wystąpie ń podelementów:?, *, + 9

DTD - deklaracje notacji: element bąd ź jednostka może zawierać dane nie będące stryktur ą XML. Aby parser nie traktował takich danych jako błędy, dane musz ą być w specyficzny sposób oznaczone. Do tego celu słu żą deklaracjenotacji. <?xml version= 1.0 standalone= no?> <!DOCTYPE obrazek [ <!ELEMENT obrazek EMPTY> <!ATTLIST obrazek zrodlo ENTITY #REQUIRED> <!-- Jednostka ogólna--> <!ENTITY logo SYSTEM Logo.jpg NDATA jpeg> <!--notacje nadaje nazwie jpeg wskazanie na program do przegl?dania plików *.jpg --> <!NOTATION jpeg SYSTEM..\jpgView.exe > ]> <!-- odwołanie w dokumencie XML--> <obrazek zrodlo= logo /> <!--odwołanie do jednostki ogólnej czyli pliku Logo.jpg przetwarzanego przez program jpgview.exe --> 10

DTD - sekcje warunkowe: sposób na wydzielenie fragmentów DTD, które można włączyć lub wyłączyć z przetwarzania. <![INCLUDE [...]> <![IGNORE[...]> Np <?xml version= 1.0 encoding= UTF-8?> <![INCLUDE [ <!ELEMENT imie (#PCDATA)> <!ELEMENT nazwisko (#PCDATA)> ]> <![IGNORE [ <!ELEMENT nazwa_firmy (#PCDATA)> <!ELEMENT adres (#PCDATA)> ]> 11

Problemy i ograniczenia DTD - brak możliwości ograniczenia tekstowej treści elementów. Jeżeli możliwa jest zawartość tekstowa to w treści elementu można umieścić wszystko. W szczególności nie można określić typu zawartości elementu, - brak wartości domyślnych dla elementów (istniej ą one tylko dla atrybutów), - słabe możliwości kontroli typów atrybutów (typ wyliczeniowy to za mało), w tym także brak możliwościzapewniania niepowtarzalności wartości atrybutów, - brak możliwości zmiany kolejności elementów, - brak możliwości ustalenia kolejności elementów, - słaba modułowość (chodzi o możliwość podziału rozbudowanego DTD na cześci ), mechanizm jednostek to często za mało, - typ ID dla atrybutów ma zbyt wiele ogranicze ń. Nie można za jego pomoc ą zapewnić niepowtarzalności w ramach tylko jednego atrybutu (dotyczy on zawsze całego dokumentu i wszystkich atrybutów o typie ID), nie można go także stosować do treści elementów, - syntaktyka DTD jest inna ni ż zwykłego XML (np elementy zaczynaj ą si ę od znaku!) 12

XML Schema - standard zatwierdzony 2 maja 2001, - umożliwia dokładne opisanie drzewiastej struktury dokumentu XML, - bardziej zaawansowany sposób opisu struktury umożliwiający dużo większ ą kontrol ę nad zawartości ą dokumentu, - schemat XML Schema jest zewnętrznym w stosunku do dokumentu XML i nie zawiera żadnych odnośników do opisywanego dokumentu, sprawdzenie poprawności może nastąpić jedynie dzięki odpowiednim powiązaniom, umieszczonym w dokumencie XML 13

XML Schema - budowa dokumentu: poniewa ż XML jest osobnym językiem potrzebna jest odpowiednia przestrze ń nazw zawierająca nazwy wykorzystywane w schematach, - ogólna struktura schematu: <?xml version= 1.0?> <!--deklaracja przestrzeni nazw oraz korze ń: schema--> <!--wszystkie nazwy elementów pochodz ą z przestrzeni nazw identyfikowanej przez http://w3.org/2001/xmlschema--> <xsd:schema xmlns:xsd= http://www.w3.org/2001/xmlschema > <!--wlaściwa część deklaracji schematu-->... </xsd:schema> - można te ż zastosować domyśln ą przestrze ń (bez prefiksu): <?xml version= 1.0?> <schema xmlns= http://www.w3.org/2001/xmlschema > <!--wlaściwa część deklaracji schematu--> </schema> 14

XML Schema - budowa dokumentu: - zasadnicze składowe schematu: podstawowymi strukturami schematów s ą elementy o nazwach: element oraz atrybut. W deklaracjach tych określa si ę typ przechowywanych danych, wymagania związane z liczb ą i koniecznoś ci ą wystąpie ń. - np: <!--imie jest dowolnym ciagiem znaków --> <!-- odpowiada to deklaracji DTD, elementowi #PCDATA--> <xsd:element name= imie type= xsd:string /> użycie: <?xml version= 1.0?> <imie>karol</imie> - oprócz deklaracji elementów i atrybutów w schematach mog ą wystąpić definicje nowych typów, które s ą następnie stosowane w deklaracjach, Ogólnie schematy XML Schema składaj ą si ę z: - deklaracji XML, czyli wiersza: <?xml version= 1.0?>, - elementu głównego schema, który zawiera określenie przestrzeni nazw, - definicji typów, - deklaracji elementów i atrybutów 15

XML Schema - odwołania do schematów bez przestrzeni nazw: dokment XML można przypisać schematowi bez określania przestrzeni nazw damego schematu w danym dokumencie. Należy wtedy w dokumencie XML użyć atrybutu xsl: nonamespaceschemalocation, w którym podaje si ę lokalizacj ę, - np: <?xml version= 1.0?> <elementkorzen xmlns:xsi= http://www.w3.org/2001/xmlschema-instance xsi:nonamespaceschemalocation= schemat1.xsd > <!--zasadnicza tresc dokumentu XML-->......... </elementkorzen> 16

- typy proste: np: XML Schema <!--wiek jest dowolna liczb? ca?kowit?--> <xsd:element name= wiek type= xsd:integer /> Atrybut type może przybierać wartości: - typu wbudowanego, czyli zdefiniowanego bezpoś rednio przez standard XML Schema np: integer, string, - typu prostego wlasnego zdefiniowanego typu prostego przy użyciu elemntu: <xsd:simpletype>, - typu złoż onego własnego zdefiniowanego przy użyciu elementu: <xsd:complextype> np: zdefioniowanie typu prostego (liczby calkowitej z przedzialu <1;150>) <?xsd: schema xmlns:xsd= http://www.w3org/2001/xmlschema?> <xsd:simpletype name= mojtyp1 > <xsd:restriction base= xsd:integer > <xsd:mininclusive= 1 /> <xsd:maxinclusive= 150 /> </xsd:restriction> </xsd:simpletype > </xsd:schema> - uzycie zdefioniowanego typu w XML Schema: <xsd:element name= wiek type= mojtyp1 /> 17

XML Schema - typy złożone mog ą określać istnienie w elemencie podelementów (także ich liczb ę, typ i kolejność) oraz koniecznoś ć istnienia oraz typ atrybutów. Jeśli dany element zawiera zawiera atrybuty lub podelementy, zawsze musimy zastosować typ złożony. np: <xsd:element name= adres type= mojtypadres /> <xsd:complextype= mojtypadres > <xsd:sequence> <xsd:element name= ulica type= xsd:string /> <xsd:element name= nrdomu type= string /> <xsd:element name= miasto type= string /> </xsd:sequence> </xsd:complextype> - przykład użycia typu złożonego: <adres> <ulica>j.slowackiego</ulica> <nrdomu>23/4</nrdomu> <miasto>pozna?</miasto> </adres> 18

XML Schema - wymuszenia występowania atrybuty w znaczniku element czyli minoccurs i maxoccurs np: <xsd:element name= imie type= xsd:string minoccurs= 1 maxoccurs= 3 /> <!--element rys mo?e wyst?pi? dowoln? liczb? razy, mo?e te? nie wyst?pi?--> <xsd:element name= rys type= xsd:string minoccurs= 0 maxoccurs= unbounded /> <!--element opis mo?e wyst?pi? co najmniej raz--> <xsd:element name= opis type= xsd:string minoccurs= 1 maxoccurs= unbounded /> - występowanie atrybutu atrybut może wystąpić jeden raz albo nie występować w ogóle. Aby określić sposób występowania atrybutu w XML Schema należy użyć use np: <xsd:attribute name= wersja use= required /> <xsd:attribute name= wersja use= optional default= 1.0 /> <xsd:attribute name= wersja use= prohibited /> 19

XML Schema wnioski - XML schema daje więcej możliwoś ci opisu dokumentu XML ale jest te ż bardziej skomplikowany, - dokumenty XML Schema zaimuj ą dużo więcej miejsca, - możliwość definiowania nowych typów danych, - dzięki dużej elastyczno ści XML Schema można ju ż w momencie sprawdzania poprawno ści struktury dokumentu XML wychwycić niepoprawne dane, - w odróżnieniu do DTD składnia schematów XML schema jest taka, jak zwykłych dokumentów XML. 20

XPath - język umożliwiaj ący wskazywanie elementów, atrybutów czy całych fragmentów dokumentu XML, - wykorzystywany w innych standardach takich, jak XSLT, Xlink 21

XPath - budowa wyraże ń XPath: wyrażenia XPath pozwalaj ą na operacje na zawartości dokumentu XML. Do opercji tych należy przetwarzanie informacji tekstowych oraz badanie drzewiastej struktury dokumentu. - najmniejsz ą jednostk ą składaj ąc ą si ę na wyrażenie XPath jest krok (ang. step). Jest to wyrażenie reprezentujące element,atrybut lub funkcj ę, - pojedy ńczy krok jest poprawnym wyrażeniem XPath, najcz ęściej zachodzi systuacja, gdy trzeba złozyć kilka kroków i utworzyć ścieżk ę, poszczególne kroki rozdzielone sa /, - język XPath umożliwia wyszukiwanie informacji w dokumentach XML przez odzwierciedlenie struktury dokuemntu w drzewo, - do podstawowych struktur XPath nale żą intrukcje pozwalające sprawnie poruszać si ę po drzewiastym modelu dokumentu 22

XPath - relacje miedzy węzłami w dokuemncie XML: 23

XPath - dost ęp do węzłów drzewa: słowo języka XPath znaczenie child - węzły-dzieci descedant - węzły potomkowie parent - węzeł-rodzic(pusty dla węzła korzenia) ancestor - węzły przodkowie following-sibiling - kolejne węzły na tym samym poziomie preceding-sibiling - poprzednie węzły na tym samym poziomie following - wszystkie kolejne węzły (bez potomków) preceding - wszystkie poprzednie węzły (bez przodków) self - aktulany węzeł descendant-or-self - potokowie oraz aktualny węzeł ancestor-or-self - przodkowie oraz aktualny węzeł 24

XPath - podsumowanie - język XPath umożliwia tworzenie złożonych wyraże ń wyszukujących poszczególne węzły lub ich zbiory, jednak nie posiada mechanizmów do: - wyszukiwania łańcuchów tekstów rozciągaj ących si ę poprzez kilka elementów, - wskazywania na znaczniki: pocz ątkowy lub końcowy, - oznaczania punktów (określonych miejsc w tekście) lub zakresów (obszarów pomi ędzy dwoma puktami) rozwiązanie: język XPointer 25

XLink XML'owy sposób na odsyłacze. - odsyłacze hipertekstowe jeden z fundamentów popularności języka HTML, - niezwykle pomocne przy nawigowaniu po dokumencie i wyszukiwaniu interesujących fragmentów Czy można jeszcze co ś poprawić...a może wogóle zastosować inne podejście w odsyłaczach???...oczywi ście XML ma odpowied ź;) Teraz XLink!!! 26

XLink XML'owy sposób na odsyłacze. - na potrzeby dokumentów XML i w celu poszerzenia możliwości odsyłaczy HTML został opracowany specjalny standard języka odesła ń XLink (XML Linking Language), publikacja 27.06.2001. - XLink jest osobnym standardem i nie należy do specyfikacji XML więc aby móc go użyć należy posłu żyć si ę odpowiednia przestrzeni ą nazw. Przestrze ń ta jest zwykle oznaczana prefiksem xlink a jej identyfikatow URI to http://www.w3.org/1999/xlink pocz ątek dokumentu XML, zawierającego odsyłacze Xlink: <?xml version= 1.0?> <!--deklaracja przestrzeni nazw dla odsy?aczy XLink--> <korzen_dokumentu xmlns:xlink= http://www.w3.org/1999/xlink >... </korzen_dokumentu> 27

XLink XML'owy sposób na odsyłacze. - zostały wyróżnione dwa rodzaje odsyłaczy: odsyłacze proste (ang. simple) będące jedynie roszerzon ą wersj ą odsyłaczy znanych z języka HTML; odsyłacze rozszerzone (ang. Extended), czyli wielokierunkowe, umożliwiają ce przechowywanie w jednym miejscu różnych odesła ń jednocze śnie do wielu miejsc przykład odsyłacza prostego: <?xml version= 1.0?> <korzen xmlns:xlink= http://www.w3.org/1999/xlink > <!--odsylacz odsylacz_prosty wskazuje na zdalny plik dostepny za pomoc? protokolu http na serwerze www.przyklad.pl--> <odsylacz_prosty> xlink:href= http;//www.przyklad.pl/xml/ksiazka.doc xlink:type= simple Wi?cej informacji w tym pliku. </odsylacz_prosty> </korzen> 28

XLink XML'owy sposób na odsyłacze. - odsyłacze rozszerzone mog ą łączyć wiele miejsc jednocze śnie, s ą złożonymi strukturami i mog ą zawierać: - wskaźnik (lacator-type element), odsyłaj ący do zewnętrzych zasobów, - zasów (resource-type element), opisujący lokalne zasoby, - łuk (arc-type element), określający reguły przechodzenia między zasobami, - tytuł (title-type element), za jego pomoc ą można nadawać zrozumiałe dla człowiekka nazwy, - wyszczególnione elementy mog ą występować samodzielnie(nie jako podelementy odsyłacza rozszerzonego), przykład wykorzystania elementu wskaź nik ( typ locator) który wkazuje na źródło informacji zwykle jest to dokument XML, chocia ż nie koniecznie <wydzial xlink:type= locator > xlink:label= wydzial_mech xlink:href= http://www.jakaspolibuda.edu.pl/wydz_mech.xml /?> przykład wykorzystania samego elementu zasób ( typ resource) <przedmiot xlink:type= resource > xlink:label= Systemy Wiarygodne <imie>micha?</imie> <nazwisko>szychowiak</nazwisko><tytul>dr inz.</tytul> </przedmiot> 29

XLink XML'owy sposób na odsyłacze. - łuki i reguły przechodzenia; najstotniejszymi atrybutami łuku s ą from i to, za ich pomoc ą tworzony jest łuk (połączenie) z zasobu wskazywaneg przez from (zasób startowy) do zasobu wskazywanego przez to (zasób docelowy). Wartościom tych atrybutów musz ą odpowiadać takie same wartości atrybutu label w odpowiednich, łącz ących przez łuk zasobach. <przedmiot xlink:type= locator > xlink:label= ti xlink:title= Teoria informacji xlink:href= http://www.jakaspolibuda.edu.pl/ti.xml /> <wydzial xlink:type= locator > xlink:label= wiiz xlink:title= Wydzia? Informatyki i Zarz?dzania xlink:href= wiiz.xml /> <kurs xlink:type= arc xlink:title= Teoria informacji na Wydz. Informatyki i Zarz?dzania xlink:from= ti xlink:to= wiiz /> 30

XLink XML'owy sposób na odsyłacze. - odsyłacze rozszerzone; poprzednio zaprezentowane elementy można połaczyć ze sob ą i utworzyć odsyłacz rozszerzony. Za pomoc ą tych adsyłaczy można tworzyć wielokierunkowe odesłania do wielu zasobów, gdy ż w jednym odsyłaczu rozszerzonym może wystąpić wiele elementów typu zasób, wskaźnik i łuk przykład: <?xml version="1.0"?> <katalog_odsylaczy xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended"> <nazwa_katalogu xlink:type="title"> Katalog kursów dla Politechniki Wroc?awskiej </nazwa_katalogu> <przedmiot xlink:type="locator" xlink:label="ti" xlink:title="teoria informacji" xlink:href="ti.xml#opis"/> <prowadzacy> <imie>czes?aw</imie> <nazwisko>dani?owicz</nazwisko> </prowadzacy> <godzina tydzien="parzysty">wtorek 9.15-11.00</godzina> <sala>budynek A-1, sala 203b</sala> </przedmiot> 31

XLink XML'owy sposób na odsyłacze. Ciąg dalszy przykładu: <wydzial xlink:type="locator" xlink:label="wydz_iz" xlink:title="wydzia? Informatyki i ZarzÄdzania" xlink:href="wiz.xml"/> <wydzial xlink:type="locator" xlink:label="wydz_mech" xlink:title="wydzia? Mechaniczny" xlink:href="wm.xml"/> <kurs xlink:type="arc" xlink:from="ti" xlink:to="wydz_iz" xlink:arcrole="http://www.pwr.wroc.pl/podstawowy" xlink:title="kurs podstawowy"/> <kurs xlink:type="arc" xlink:from="ti" xlink:to="wydz_mech" xlink:arcrole="http://www.pwr.wroc.pl/dodatkowy" xlink:title="kurs dodatkowy"/> <kurs xlink:type="arc" xlink:from="algebra" xlink:to="wydz_iz" xlink:arcrole="http://www.pwr.wroc.pl/podstawowy" xlink:title="kurs podstawowy"/> <kurs xlink:type="arc" xlink:from="algebra" xlink:to="wydz_mech" xlink:arcrole="http://www.pwr.wroc.pl/podstawowy" xlink:title="kurs podstawowy"/></katalog_odsylaczy > 32

XLink XML'owy sposób na odsyłacze. Ciąg dalszy przykładu: 33

XLink XML'owy sposób na odsyłacze. - hipotytyczna prezentacja łuków: 34

XLink XML'owy sposób na odsyłacze. - Xlink to nowe spojrzenie na odsyłacze (osobny element języka), - bazy odsyłaczy daj ą możliwości łatwego zarządzania linkami, - łatwość katalogowania odsyłaczy, - czy istnieje jaka ś wada...(dos :) 35

Podsumowanie: XML to bardzo obiecująca technologia!!! 36

Bezpieczeństwo XML I. Kontrola poprawności dokumentów II. Integralność, niezaprzeczalność ( XML Signature ) III. Prywatność, poufność ( XML Encryption ) IV. Web Services 37

DTD ( Document Type Definition ) <!DOCTYPE catalog [ <!ELEMENT Katalog (Produkt*)> <!ELEMENT Produkt (NrProduktu*, NazwaProduktu*, CenaSklepowa*)> <!ELEMENT NrProduktu (#PCDATA)> <!ELEMENT NazwaProduktu (#PCDATA)> <!ELEMENT CenaSklepowa (#PCDATA)> ]> <!ENTITY BrakTowaru Towar nie jest dostępny w magazynie. > - struktura nie XMLowa, - zewnętrzne DTD mogą nie być odpowiednio chronione, - brak definicji typów i rozmiaru zawartości elementów, - nie zapewnia odpowiedniego poziomu integralności dokumentu XML, - wartości ENTITY i NOTATION nie podlegające analizie składni DTD: XML: <!ENTITY Sciezka_1 Bardzo_dziwny_łańcuch > <!ENTITY Sciezka_2 Bardzo_długi_łańcuch > <znacznik sciezka= &Sciezka_1; /> 38

XSD ( XML Schema Declaration) <xsd:schema id="catalog" xmlns="catalog.xsd" xmlns:xsd="http://www.w3.org/2001/xmlschema" <xsd:element name="katalog"> <xsd:complextype> <xsd:choice maxoccurs="unbounded"> <xsd:element name="produkt"> <xsd:complextype> <xsd:sequence> <xsd:element name="nrproduktu" type="xsd:string" minoccurs="0" /> <xsd:element name="nazwaproduktu" type="xsd:string" minoccurs="0" /> <xsd:element name="cenasklepowa" type="xsd:decimal" minoccurs="0" /> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:choice> </xsd:complextype> </xsd:element> </xsd:schema> - typy danych, zakresy wartości, rozmiary wartości, wzorce,... <xsd:simpletype name="date"> <xsd:restriction base="xsd:token"> <xsd:pattern value="[0-1][0-9]/[0-3][0-9]/[0-9]{2}" /> </xsd:restriction> </xsd:simpletype> - ma strukturę XMLową - kilkustopniowa kontrola poprawności - zapewnia większy poziom integralności dokumentu XML - problem: zewnętrzne schematy 39

Kodowanie Serwer MS IIS podatny na żądanie dostępu do bezpiecznych plików łańcuch_1: /../../ łańcuch_2 ( Unicode ): %c0%af../..%c0%af http://www.atak.pl/scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir - problem: różne standary kodowania, - ASCII ( ISO-8859-2,... ), - Unicode ( UTF-8, UTF-16,... ) - dla przykładu: znak '/' %c0%af, %c1%pc, %c0%9v, %c0%qf, %c1%8s, %c1%1c, %e0%80%af, %f0%80%80%af, %f8%80%80%80%af, %fc%80%80%80%80%af - znaki sterujące ( ASCII od 0 31 ) - A - litera A, 2 - cyfra 2 - &#24; - anuluj wiersz - znak końca tekstu, sterowanie przepływem, rozkazy dla drukowania, urządzeń komunikacyjnych 40

Analiza szkodliwych znaków - analiza reprezentacji znaku transformując go do różnych postaci znakowych w różnych standardach kodowania i weryfikowanie ich pod kątem szkodliwości - przed analizą dokumentu sprowadzenie tekstu do jednego standaru kodowania ( np: Python unicode( 'łańcuch', UTF-8 ) ) 41

1. Analiza szkodliwych znaków, łańcuchów 2. Kontrola poprawności dokumentów Reasumując... DTD ( Document Type Definition) - brak możliwości weryfikacji DTD - bardzo małe możliwości w określaniu typów, rozmiarów,... - zewnętrzny DTD nie jest bezpieczny XSD ( XML Schema Declaration ) - weryfikacja poprawności schematu, - znacznie większe możliwości w określaniu typów, rozmiarów, zakresów,... - zewnętrzny XSD nie jest bezpieczny Wydajność ( tysiąc odwołań na minutę ) - weryfikacja danych bezpośrednio w aplikacji Narzędzia - XML Spy 4.3 środowisko programowe do weryfikacji XML'a na podstawie DTD i schematów ( www.xmlspy.com ) - Oprogramowanie firmy Sun. Dokonuje poprawności względem schematów i DTD ( www.sun.com/software/xml/developers/multischema/ ) - W3C Validator for XML Schema - www.w3.org/2001/03/webdata/xsv - Analiza poprawności dokumentu XML - http://www.stg.brown.edu/service/xmlvalid - Analiza poprawności dokumentu XML - http://xml.com/pub/a/tools/ruwf/check.html 42

XML Signature, podpis cyfrowy 43

XML Signature, postać kanoniczna - różne składnie XML, to samo znaczenie <img src="dwlogo.gif" width="225" height="30"/> <img src= dwlogo.gif" height="30" width="225"/> - różne składnie XML a to samo znaczenie, różne skróty wiadomości - konieczność sprowadzenia do postaci neutralnej składniowo Canonical XML Version 1.0 ( http://www.w3.org/tr/xml-c14n ) - dokument kodowany w UTF-8, - domyślne atrybuty dodane do każdego elementu, - odwołania do ENTITY z DTD są zastępowane ich wartościami, - deklaracje dokumentu XML i DTD są usuwane, - leksykograficzny porządek deklaracji przestrzeni nazw, atrybutów, - zbędne deklaracje przestrzeni nazw są usuwane, - usuwanie zbędnych białych znaków z elementów, - puste elementy konwertowane do elementów start-end, - wartości atrybutów umieszczane są w kurzych łapkach 44

XML Signature, postać kanoniczna <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE doc [<!ATTLIST e10 attr CDATA "default"> <!ENTITY ent1 "Hello">]> <doc> <e1 /> <e2 >&ent1;</e2> <e3 name = "elem3" id="elem3" /> <e4 name="elem4" id="elem4" ></e4> <e5> </e5> <e6 a:attr="out" b:attr="sorted" attr2="all" attr="i'm" xmlns:b="http://www.ietf.org" xmlns:a="http://www.w3.org" xmlns="http://example.org"/> <e7 xmlns="" xmlns:a="http://www.w3.org"> <e8 xmlns="http://www.ietf.org"> <e9 xmlns="" xmlns:a="http://www.w3.org"> <e10 xmlns="" xmlns:a="http://www.ietf.org"/> </e9> </e8> </e7> <!-- Comment --> </doc> <doc> <e1></e1> <e2>hello</e2> <e3 id="elem3" name="elem3"></e3> <e4 id="elem4" name="elem4"></e4> <e5>#xc2#xa9</e5> <e6 xmlns="http://example.org" xmlns:a="http://www.w3.org" xmlns:b="http://www.ietf.org" attr="i'm" attr2="all" b:attr="sorted" a:attr="out"></e5> <e7 xmlns:a="http://www.w3.org"> <e8 xmlns="http://www.ietf.org"> <e9 xmlns=""> <e10 xmlns:a="http://www.ietf.org" attr="default"></e9> </e9> </e8> </e7> <!-- Comment --> </doc> 45

XML Signature, struktura XML podpisu cyfrowego <Signature ID?> <SignedInfo> <CanonicalizationMethod/> <SignatureMethod/>) (<Reference URI?> (<Transforms>)? <DigestMethod> <DigestValue> </Reference>)+ </SignedInfo> <SignatureValue> (<KeyInfo>)? (Object ID?)* </Signature> - transformacja dokumentu ( transformacje XPath i XSLT, kodowanie, dekodowanie, kompresja, dekompresja ), <Transforms> <Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> </Transforms> - sprowadzanie danych do postaci kanonicznej, <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> - obliczenie funkcji skrótu <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> - podpisanie dokumentu <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> 46

XML Signature, formy podpisu cyfrowego - Forma otoczona podpis znajduje się wewnątrz dokumentu <Envelope> <Signature>... </Signature> <Data>The information that we want to sign goes here...</data> </Envelope> - Forma otaczająca dokument znajduje się wewnątrz podpisu <Signature>... <Reference URI="#object">... <Object Id= object > <Data>The information that we want to sign goes here...</data> </Object> </Signature> - Forma odłączona podpis odnosi się do dokumentu wskazanego przez URI <Signature>... <Reference URI="file:///home/voytek/xml/weather.xml">... </Signature> 47

XML Signature, inne formy podpisu cyfrowego - Połączenie form <Signature>... <Reference URI="file:///home/voytek/xml/weather.xml">... </Reference> <Reference Type="http://www.w3.org/2000/09/xmldsig#Object" URI= #myxml >... </Reference>... <Object Id= myxml > <Data>The information that we want to sign goes here...</data> </Object> </Signature> - Podpisywanie części dokumentu <Signature>... <Reference URI="file:///home/voytek/xml/weather.xml#Poznan">... </Reference>... </Signature> 48

XML Signature, inne formy podpisu cyfrowego - Podpisywanie części dokumentu ( przekształcenie XPath ) <Signature>... <Reference URI="file:///home/voytek/xml/weather.xml"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"> <XPath> //weather[@id="poznan"] </XPath> </Transform> </Transforms> </Reference> </Signature> 49

XML Signature, inne formy podpisu cyfrowego - Podpisywanie części dokumentu ( przekształcenie XSLT ) <Signature>... <Reference URI="file:///home/voytek/xml/weather.xml"> <Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" version="1.0"> <xsl:output encoding="utf-8" method="xml"/>... <xsl:template match="location"> <xsl:apply-templates/></xsl:template> <xsl:template match="time wind visibility sky note dewpt press temperature humidity"> </xsl:template> </xsl:stylesheet> </Transform></Transforms> </Reference> </Signature> 50

- manfiest XML Signature, inne formy podpisu cyfrowego <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Signer1"> <SignedInfo>... <Reference URI="#WeatherReport" Type="http://www.w3.org/2000/09/xmldsig#Manifest">... <DigestValue>...</DigestValue> </Reference> <SignedInfo> <Object> <Manifest Id="WeatherReport"> <Reference URI=""file:///home/voytek/xml/weather.xml#Poznan">... <DigestValue>...</DigestValue> </Reference> <Reference URI=""file:///home/voytek/xml/weather.xml#Gdansk">... <DigestValue>...</DigestValue> </Reference> </Manifest> </Object> </Signature> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Signer2"> <SignedInfo>... <Reference URI="#WeatherReport" Type="http://www.w3.org/2000/09/xmldsig#Manifest">... <DigestValue>...</DigestValue> </Reference> <SignedInfo> </Signature> - podpisujemy skrót manifestu ( skrót skrótów ) - wiele podpisów dla jednego manifestu 51

XML Signature, certyfikaty - certyfikat X.509 <KeyInfo> <X509Data /> </KeyInfo> <KeyInfo> <X509Data> <X509Certificate> MIICmjCCAkSgAwIBAgIBBzANBgkqhkiG9w0BAQQFADCBvTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaW ExETAPBgNVBAcTCE1vbnRlcmV5MSAwHgYDVQQKExdUYXlnZXRhIFNjaWVudGlmaWMgSW5jLjEoMCYGA1UECxMfQ2Vy dglmawnhdglvbibtzxj2awnlcybeaxzpc2lvbjezmbcga1ueaxmqdmvnys50yxlnzxrhlmnvbtefmb0gcsqgsib3dqej ARYQc2tpcEB0YXlnZXRhLmNvbTAeFw0wMjA2MDYwODIzMzJaFw0wMzA2MDYwODIzMzJaMDoxFzAVBgNVBAMTDkV2Z XJldHQgQ2FydGVyMR8wHQYJKoZIhvcNAQkBFhBza2lwQHRheWdldGEuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADC BiQKBgQCw3RzQ6Rtkqn1qmyCwmQpC+q37u5cYd6qET8d4PkTB9w/7GWqgcQdtNGcoym/0RNN8m7c3W5rmzUlHS8Pkii itovq+oxgoiyhkt/klzblkslhf957b+20ec9wlcgggom2u2optimolv/rw22lo/m5g8k54sfjnf28a0wjerdad0qidaq ABo20wazAbBgNVHREEFDASgRBza2lwQHRheWdldGEuY29tMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAU/g8Leo1 SC4i5XE3LdvnCR+jCzTgwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMA0GCSqGSIb3DQEBBAUAA0EAGKz EY81y3mA61q6Od7NkovXdXMO9PSX+eQPQiYvk7Fzffo1620WJTds2TRkkromSIfoLxVH49c8T0Efpg0HvDA== </X509Certificate> </X509Data> </KeyInfo> 52