Gliederung XML- und WebserviceSicherheit 1. 2. 3. 4. 5. 6. 1. Das World Wide Web 1.2 Grundzüge von HTML und XML HTML-Versionen Struktur eines HTML-Dokuments Die wichtigsten Tags Formulare XML und XSL XHTML Literatur: A. S. Tanenbaum, Computer Networks, 4th. Ed., Pearson Education Int., 2003 W. Dehnhardt, Scriptsprachen für dynamische Webauftritte, Hanser-Verlag, 2001 Selfhtml 8.0, http://selfhtml.teamone.de/ Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 1. HTML-Versionen 1 1. HTML-Versionen Übersicht zu dem HTML-Features (aus A. Tanenbaum, Computer Networks): Was ist vorhanden? HTML 1.0 HTML 2.0 HTML 3.0 HTML 4.0 Hyperlinks X X X X Bilder/Grafiken X X X X Listen X X X X Aktive Karten und Bilder X X X „Forms“ X X X Gleichungen X X Toolbars X X Tabellen X X Accessibility features X Objekteinbettung X Scripting X 1 HTML 1.0 1 HTML 2.0 1 1 1 1 1 Ab Januar 1997 Standard Viele Bestandteile sind als „deprecated“ gebrandmarkt HTML 4.0 1 1 1 1 Ab 1995 offizieller Standard Kleinster gemeinsamer Nenner, den alle Browser verstehen Netscape war bei Verabschiedung schon viel weiter (Frames, Multimedia) HTML 3.2 1 1 1 Spezifikation ist heute von w3.org nicht mehr verfügbar CSS Javascript Unicode für Internationalisierung XHTML 1.0 und 1.1 1 Einbindung in XML Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2. Struktur eines HTML-Dokuments 2. Struktur eines HTML-Dokuments 1 1 1 (aus SELFHTML 8.0, selfhtml.teamone.de): Eine gewöhnliche HTML-Datei besteht grundsätzlich aus folgenden Teilen: 1 1 1 1 Dokumenttyp-Angabe (Angabe zur verwendeten HTML-Version) Header (Kopfdaten. z.B. Angaben zu Titel u.ä.) Body (Körper - anzuzeigender Inhalt, also Text mit Überschriften, Verweisen, Grafikreferenzen usw.) Schema: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/transitional.dtd"> <html> <head> <title>Text des Titels</title> </head> <body> .... </body> </html> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 1 HTML ist eine Markup-Sprache, ähnlich wie TEX Formatierungskommandos heißen Tags 1 1 1 Tags können Attribute haben 1 1 Beispiel: <img src="http://www.widget.com/images/logo.gif" ALT="AWI Logo"> Sonderzeichen werden durch &zeichenfolge; dargestellt: 1 1 1 1 Struktur <etwas> text </etwas> oder <etwas blablabla> Beispiel: <b> fett </b> ergibt „fett“ Ö & é &Ouml; &amp; &eacute; Tags können auch verschachtelt werden 1 Beispiel: <a href=„http://www.nasa.gov“> <img src=„shuttle.gif“ alt=„NASA“> </a> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 1 2. Struktur eines HTML-Dokuments 2. Struktur eines HTML-Dokuments <html> <head> <title> AMALGAMATED WIDGET, INC. </title> </head> <body> <h1> Welcome to AWI's Home Page </h1> <img src="http://www.widget.com/images/logo.gif" ALT="AWI Logo"> <br> We are so happy that you have chosen to visit <b> Amalgamated Widget's</b> home page. We hope <i> you </i> will find all the information you need here. <p>Below we have links to information about our many fine products. You can order electronically (by WWW), by telephone, or by fax. </p> <hr> <h2> Product information </h2> <ul> <li> <a href="http://widget.com/products/big"> Big widgets </a> <li> <a href="http://widget.com/products/little"> Little widgets </a> </ul> <h2> Telephone numbers </h2> <ul> <li> By telephone: 1-800-WIDGETS <li> By fax: 1-415-765-4321 </ul> </body> </html> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2. Struktur eines HTML-Dokuments Frames 1 Frames können zur Strukturierung von Webseiten verwendet werden 1 Ähnliches Aussehen kann auch mit Tabellen erzeugt werden, aber 1 1 1 Jeder Frame enthält eigenes HTML-Dokument Wird der Inhalt eines Frames geändert, muss nur dieses Dokument geladen werden (bei Tabellen die ganze Tabelle) Wegen „Framespoofing“-Angriff müssen alle Frames aus einer Domain bzw. von einem Server stammen Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2. Struktur eines HTML-Dokuments (nds.rub.de) <html> <head>...</head> <frameset cols="240,*" framespacing="0" border="0" frameborder="0"> <frame name="Inhalt" scrolling="no" noresize target="Hauptframe" src="indexl.html"> <frameset rows="100,*"> <frame name="Banner" scrolling="no" target="Hauptframe" src="indexo.html"> <frame name="Hauptframe" src="indexm.html" scrolling="auto" target="_top"> <noframes> <body> <p>Diese Seite verwendet Frames.</p> </body> </noframes> </frameset> </frameset> </html> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2. Struktur eines HTML-Dokuments (nds.rub.de): Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 3. Wichtige Tags <html> Umklammert die gesamte, in HTML geschriebene Webseite <head> Der Seitenheader <body> Der Hauptteil der HTML-Seite; wird im Fenster angezeigt <title> Titel der Seite im HEAD-Teil; wird nicht im Fenster angezeigt <h[1-6]> Überschriften der Stufen 1 bis 6 <b> fett <i> kursiv <center> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit zentriert <ul> • ungeordnete Liste <ol> 1. geordnete Liste <li> Ein Element einer (un-)geordneten Liste <br> Zeilenumbruch Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 3. Wichtige Tags 3. Wichtige Tags Cascading Style Sheets <p> Neuer Absatz <hr> Horizontale Linie 1 HTML ist keine Designsprache, sondern eine Struktursprache <img src=„…“> Einfügen eines Bildes 1 Um das Aussehen einer Webseite genau bestimmen zu können, <a href=„…“> Text </a> Hyperlink <table> Tabelle <tr> Tabellenzeile („table row“) <th>, <td> Zellen der Tabelle („table header, table data“) <form action=„…“ method=„…“> Formular <input name=„…“ type=text|password|radio|checkbox| button|file|submit value=„…“> Eingabefeld, kann verschiedene Typen haben Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 3. Wichtige Tags wurde HTML um Cascading Style Sheets erweitert 1 CSS gibt es in den Versionen 1 und 2 1 Mit CSS kann man das Aussehen der einzelnen HTML-Tags genau festlegen. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 3. Wichtige Tags <html> <head> <title>Titel der Datei</title> <style type="text/css"> <!-body { background-color:#FFFFCC; margin-left:100px; } h1 { font-size:48pt; color:#FF0000; font-style:italic; border- bottom:solid thin black; } p,li { font-size:12pt; line-height:14pt; font-family:Helvetica,Arial,sans-serif; letter-spacing:0.2mm; word-spacing:0.8mm; color:blue; } --> </style> </head> <body> <h1>&Uuml;berschrift 1. Ordnung</h1> <p>ein normaler Textabsatz</p> <ul> <li>Ein Listenpunkt</li> <li>Ein anderer Listenpunkt</li> </ul> </body> </html> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 4. Formulare 1 1 1 Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 4. Formulare (aus A. Tanenbaum) Eingeführt in HTML 2.0 Zur Interaktion des WWW-Nutzers mit dem Server <form>… </form> 1 umschließt mehrere Eingabefelder und mindestens einen „Submit“-Button 1 Einzeiliger Text, mehrzeiliger Text, Radio Buttons, Checkboxes, Auswahllisten, Datei-Upload 1 Enthält als Attribute 1 die Ziel-URL, an die die Daten übergeben werden (meist …/cgibin/…, …php oder …asp) 1 Die Methode, mit der die Daten übergeben werden (POST oder GET) Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit <html> <head> <title> AWI CUSTOMER ORDERING FORM </title> </head> <body> <h1> Widget Order Form </h1> <form ACTION="http://widget.com/cgi-bin/widgetorder" method=POST> <p> Name <input name="customer" size=46> </p> <p> Street Address <input name="address" size=40> </p> <p> City <input name="city" size=20> State <input name="state" size =4> Country <input name="country" size=10> </p> <p> Credit card # <input name="cardno" size=10> Expires <input name="expires" size=4> M/C <input name="cc" type=radio value="mastercard"> VISA <input name="cc" type=radio value="visacard"> </p> <p> Widget size Big <input name="product" type=radio value="expensive"> Little <input name="product" type=radio value="cheap"> Ship by express courier <input name="express" type=checkbox> </p> <p><input type=submit value="submit order"> </p> Thank you for ordering an AWI widget, the best widget money can buy! </form> </body> </html> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 3 4. Formulare (aus A. Tanenbaum) 4. Formulare 1 GET-Methode 1 1 1 1 1 Eingaben werden als Query-String an die URL angehängt Beispiel (Google): GET /search?q=diploma+supplement&ie=ISO-88591&hl=de&btnG=Google+Suche&meta=cr%3DcountryDEPOST-Methode Vorteil: Anfrage kann als Bookmark gespeichert werden Problem: Bei Eingabe von Username/Passwort ist das Passwort in der History des Browsers sichtbar POST-Methode 1 1 Eingaben werden als lange Zeile an den Server übertragen Beispiel (zu Tanenbaum): customer=Joerg+Schwenk&address=Universitaetsstr+150&city=Bochum& state=NRW&country=DE&cardno=1234567890&expires=7/07& cc=mastercard&product=cheap&express=on Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 5. XML und XSL 4. Formulare Datei-Upload (aus Dehnhard): <form Method=POST Enctype=multipart/form-data Action=/CGI/Perl/anwendungen/Checkhtml.pl> <input Type=file Name=datei Size=40 Maxlength=100000> <p> <input Type=submit Value=„Upload!“> </form> Was ist XML? http://www.w3.org/XML/1999/XML-in-10-points 1. XML ist eine Methode, um strukturierte Daten in Textfiles (statt in Binärfiles) abzulegen. 1 2. Beispiel: Tabellenkalkulationen XML sieht aus wie HTML, ist aber kein HTML 1 3. HTML hat Tags mit fester Bedeutung (z.B. muss <p> nicht „paragraph“ bedeuten. Bei XML wird die Bedeutung der Tags durch eine Beschreibung festgelegt. XML ist Text, der aber nicht gelesen werden soll. 1 Textformat dient nur zum leichteren Debuggen und Reparieren von Datenfiles. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 5. XML und XSL 4. XML-Beispiel XML ist eine Familie von Technologien. 1 5. XML 1.0, Xlink (Hyperlinks), XSL (Style Sheets), XMLDSIG, ... XML-Files sind größer als Binärfiles, aber das ist kein Problem. 1 6. Datenkompression von gespeicherten Files (z.B. WinZip) oder beu Übertragung löst das Problem. XML ist neu, aber nicht ganz neu. 1 10. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML ist mächtiger als HTML (1990) und leichter zu bedienen als SGML (ISO 1986). XML ist lizenzfrei, Plattform-unabhängig und gut unterstützt. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit <?xml version="1.0" standalone="yes"?> <conversation> <greeting>Hello, world!</greeting> <response> Stop the planet, I want to get off! </response> </conversation> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 4 XML-Beispiel (2) - Baumstruktur <?xml version="1.0" standalone="yes"?> <conversation>...</conversation> <greeting>...</greeting> Hello, world! <response>...</response> Stop the planet, I want to get off! Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML-Webseite (aus A. Tanenebaum) XML-Webseite (aus A. Tanenebaum) <?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="book_list.xsl"?> <book_list> <book> <title> Computer Networks, 4/e </title> <author> Andrew S. Tanenbaum </author> <year> 2003 </year> </book> <book> <title> Modern Operating Systems, 2/e </title> <author> Andrew S. Tanenbaum </author> <year> 2001 </year> </book> <book> <title> Structured Computer Organization, 4/e </title> <author> Andrew S. Tanenbaum </author> <year> 1999 </year> </book> </book_list> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML-Webseite (aus A. Tanenebaum) <?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/"> <html> <body> <table border="2"> <tr> <th> Title</th> <th> Author</th> <th> Year </th> </tr> <xsl:for-each select="book_list/book"> <tr> <td> <xsl:value-of select="title"/> </td> <td> <xsl:value-of select="author"/> </td> <td> <xsl:value-of select="year"/> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML-Signature Syntax and Processing XML-Signature Syntax and Processing 1 http://www.w3.org/2000/02/xmldsig Drei Typen von Signaturen: 1 Gemeinsame Arbeitsgruppe von W3C und IETF 1 Dokument beschreibt: Dokument 1 Enveloping Signature 1 Syntax einer digitalen Signatur in XML 1 Verarbeitung einer digitalen Signatur in XML 1 xmlns:ds='http://www.w3.org/2000/09/xmldsig#' 1 Enveloped Signature Signatur Dokument Content Content Signatur 1 Detached Signature Dokument Signatur mit Referenz-URI Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Dokument (ReferenzURI) Content Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 5 XMLDSIG - Beispiel <Signature Id="MyFirstSignature" xmlns="http://www.w3.org/2000/02/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2000/WD-xml-c14n20000119"/> <SignatureMethod Algorithm="http://www.w3.org/2000/02/xmldsig#dsa"/> <Reference URI="http://www.w3.org/TR/2000/REC-xhtml1-20000126"/> <Transforms> <Transform Algorithm="http://www.w3.org/2000/02/xmldsig#c14n"/> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/02/xmldsig#sha1"/> <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue> </Reference> </SignedInfo> <SignatureValue>MC0CFFrVLtRlk=...</SignatureValue> <KeyInfo> <KeyValue> <DSAKeyValue><P>...</P><Q>...</Q><G>...</G><Y>...</Y></DSAKeyValue> </KeyValue> </KeyInfo> Jörg Schwenk </Signature> Lehrstuhl für Netz- und Datensicherheit XML Encryption (5) EncryptedData-Objekt: <EncryptedData (Id='')? (Type='')?> <EncryptionMethod/>? <ds:KeyInfo> <EncryptedKey/>? <ds:*/>? </ds:KeyInfo>? <CipherData> <CipherValue>(encrypted character data)</CipherValue>? <CipherReference URI=''/>? </CipherData> </EncryptedData> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Encryption – Beispiel (2) XML Encryption 1 http://www.w3.org/Encryption/2001/ 1 Ziel: Einbindung verschlüsselter Dateien und der dazu gehörenden Schlüsselinformation in XML 1 Features: 1 Klare Trennung zwischen verschlüsselten Schlüsseln und Daten (Warum?). 1 Kompatibilität mit dem XML Signature Standard. 1 Einschränkungen bei der Schachtelung von verschlüsselten Files, die sich aus dem XML-Standard ergeben. 1 xmlns:enc='http://www.w3.org/2001/04/xmlenc#' Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Encryption – Beispiel Übertragung einer Kreditkartennummer <?xml version='1.0'?> <PaymentInfo xmlns='http://example.org/paymentv2'> <Name>John Smith<Name/> <CreditCard Limit='5,000' Currency='USD'> <Number>4019 2445 0277 5567</Number> <Issuer>Bank of the Internet</Issuer> <Expiration>04/02</Expiration> </CreditCard> </PaymentInfo> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Encryption – Beispiel (3) Verschlüsselung des CreditCard-Elements Kredit-Limit bleibt unverschlüsselt <?xml version='1.0'?> <PaymentInfo xmlns='http://example.org/paymentv2'> <Name>John Smith<Name/> <EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Element' xmlns='http://www.w3.org/2001/04/xmlenc#'> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData> </PaymentInfo> <?xml version='1.0'?> <PaymentInfo xmlns='http://example.org/paymentv2'> <Name>John Smith<Name/> <CreditCard Limit='5,000' Currency='USD'> <EncryptedData Type='http://www.w3.org/2001/04/xmlenc#Content' xmlns='http://www.w3.org/2001/04/xmlenc#'> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData> </CreditCard> </PaymentInfo> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 6 XML Encryption – Beispiel (4) Nur die Kreditkarten-Nummer wird verschlüsselt <?xml version='1.0'?> <PaymentInfo xmlns='http://example.org/paymentv2'> <Name>John Smith<Name/> <CreditCard Limit='5,000' Currency='USD'> <Number> <EncryptedData xmlns='http://www.w3.org/2001/04/xmlenc#' Type='http://www.w3.org/2001/04/xmlenc#Content'> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData> </Number> <Issuer>Bank of the Internet</Issuer> <Expiration>04/02</Expiration> </CreditCard> </PaymentInfo> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 7