XML- und Webservice XML WebserviceSicherheit 1. Das World Wide Web 1.2 Grundzüge G von HTML und XML Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit Gliederung 1. 1 2. 3 3. 4. 5. 6. HTML-Versionen HTML V i 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, W. Dehnhardt Scriptsprachen für dynamische Webauftritte Webauftritte, Hanser Hanser-Verlag, Verlag 2001 Selfhtml 8.0, http://selfhtml.teamone.de/ Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 1 HTML 1. HTML-Versionen 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 Formulare X X X Gleichungen X X Toolbars X X Tabellen X X Accessibility features X Objekteinbettung X Scripting X Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 1 HTML 1. HTML-Versionen Versionen HTML 1.0 HTML 2.0 Ab Januar 1997 Standard Viele Bestandteile sind als „deprecated“ gebrandmarkt HTML 4 4.0 0 Ab 1995 offizieller Standard Kleinster gemeinsamer Nenner, den alle Browser verstehen Netscape war bei Verabschiedung schon viel weiter (Frames, Multimedia) HTML 3 3.2 2 Spezifikation ist heute von w3.org nicht mehr verfügbar CSS Javascript Unicode für Internationalisierung XHTML 1.0 und 1.1 Einbindung in XML Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 Struktur eines HTML-Dokuments 2. HTML Dokuments Eine gewöhnliche HTML-Datei besteht grundsätzlich aus folgenden T il Teilen: Dokumenttyp-Angabe (Angabe zur verwendeten HTML-Version) Header (Metadaten, z.B. Angaben zu Titel u.ä.) Body (Anzuzeigender Inhalt, also Text mit Überschriften, Verweisen, Grafikreferenzen usw.) Schema: <!DOCTYPE ...> <html> <head> ... </head> <body> ... </body> </html> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 Struktur eines HTML-Dokuments 2. HTML Dokuments HTML ist eine Markup-Sprache p p ((wie TEX, aber anders strukturiert)) Formatierungskommandos heißen Tags Tags können Attribute haben Beispiel: p <img g src="http://www.rub.de/images/logo.gif" p g g g ALT="RUB Logo"> Sonderzeichen werden durch &zeichenfolge; dargestellt: Struktur <etwas> text </etwas> oder <etwas name="wert"> Beispiel <b> f Beispiel: fett tt </b> ergibt „fett“ fett“ Ö & é &Ouml; &amp; &eacute; Tags können auch verschachtelt werden Beispiel: <a href="http://www.nasa.gov"> <img src="shuttle.gif" alt="NASA"> </a> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 Struktur eines HTML-Dokuments 2. HTML Dokuments <html> <head> <title> XMLXML und WS-Sicherheit WS Sicherheit </title> </head> <body> <h1> Willkommen zur Vorlesung </h1> <img src="http://www.nds.rub.de/gifs/netzlabor.jpg"> <br> Auch im <i> Netzlabor </i> k&oumlnnen Sie arbeiten arbeiten. <hr> <h2> Weitere Informationen </h2> < l> <ul> <li> <a href="http://www.nds.rub.de"> NDS-Seite </a> <li> <a href="http://www.et.rub.de"> Fakultätsseite </a> </ul> <h2> Meckerkasten </h2> <form><input/> </form> </body> </html> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 Struktur eines HTML-Dokuments 2. HTML Dokuments Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 Struktur eines HTML-Dokuments 2. HTML Dokuments Frames Frames können zur Strukturierung von Webseiten verwendet werden Ähnliches Aussehen kann auch mit Tabellen erzeugt werden, aber 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 iFrames Sonderfall: Frame kann beliebig innerhalb einer Webseite positioniert werden d Ist aktuell Basis vieler Angriffe auf Webserver Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 Struktur eines HTML-Dokuments 2. HTML Dokuments (nds (nds.rub.de) rub de) <html> <h d> <head>...</head> </h d> <frameset cols="240,*" framespacing="0" border="0" frameborder="0"> <frame name="Inhalt" scrolling="no" g noresize target="Hauptframe" g p src="indexl.html"> <frameset rows="100,*"> <frame name="Banner" scrolling="no" target="Hauptframe" s c src="indexo.html"> de o t <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 2. HTML Dokuments (nds (nds.rub.de): rub de): indexl.html indexo.html indexm.html Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 Struktur eines HTML-Dokuments 2. HTML Dokuments (nds (nds.rub.de): rub de): indexo.html indexm.html Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 Struktur eines HTML-Dokuments 2. HTML Dokuments (nds (nds.rub.de): rub de): indexm.html Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 2 Struktur eines HTML-Dokuments 2. HTML Dokuments (nds (nds.rub.de): rub de): Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 3 Wichtige Tags 3. <html> Umklammert die gesamte 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> 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 3 Wichtige Tags 3. <p> Neuer Absatz <hr> Horizontale Linie <img src=“ src= …“> > Einfügen eines Bildes <a href=“…“> Text </a> Hyperlink <table> Tabelle <tr> Tabellenzeile („table row“) <th>, <td> Zellen der Tabelle („table header, table data ) data“) <form action=“…“ method=“…“> Formular <input p name=“…“ type=text|password|radio|checkbox| button|file|submit value=“…“> Eingabefeld, g kann verschiedene Typen yp haben Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 3 Wichtige Tags 3. Cascading Style Sheets HTML ist keine reine Designsprache, sondern auch eine St kt Struktursprache h Um das Aussehen einer Webseite genau bestimmen zu können, wurde HTML um Cascading g Style y Sheets ((CSS)) erweitert CSS gibt es in den Versionen 1 und 2 Mit CSS kann man das Aussehen der einzelnen HTML-Tags genau f tl festlegen. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 3 Wichtige Tags 3. <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 3 Wichtige Tags 3. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 4 Formulare 4. Eingeführt g in HTML 2.0 Zur Interaktion des WWW-Nutzers mit dem Server <form>… </form> umschließt mehrere Eingabefelder und mindestens einen „Submit“-Button Ei Einzeiliger ili T Text, t mehrzeiliger h ili T Text, t R Radio di B Buttons, tt Ch Checkboxes, kb Auswahllisten, Datei-Upload Enthält als Attribute die Ziel-URL, an die die Daten übergeben werden (meist …/cgibin/…, …/*.php, …/*.asp oder Ähnliches) Die http-Methode, p , mit der die Daten übergeben g werden (POST ( oder GET) Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 4 Formulare 4. <html> <head> <title> Anmeldeformular Prüfungen </title> </head> <body> <h1> Anmeldeformular Prüfungen </h1> <form ACTION="http://www.nds.rub.de/lehre/anmeldung.php" method=POST> <p> Name <input name="student" size=46> </p> <p> E-Mail <input name="email" size=30> </p> <p> Matrikelnummer <input name="matrnr" size=20> Studienbeginn (Jahr) <input name="beginn" name beginn size size=4> 4> Master <input name="studiengang" type=radio value="Master"> Diplom <input name="studiengang" type=radio value="Diplom"> </p> <p> Systemsicherheit <input name="pruefung1" type=checkbox> </p> <p> Netzsicherheit <input name="pruefung2" type=checkbox> </p> <p><input type=submit value="Anmelden!!"> </p> Viel Erfolg! </form> </body> </html> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 4 Formulare 4. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 4 Formulare 4. GET-Methode 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%3DcountryDE 1&hl=de&btnG=Google+Suche&meta=cr%3DcountryDE Vorteil: Anfrage kann als Bookmark gespeichert werden Problem: Bei Eingabe von Username/Passwort ist das Passwort in der Histor des Bro History Browsers sers sichtbar POST-Methode Eingaben g werden als String g im Body y des http-Requests p q an den Server übertragen Beispiel (zu Tanenbaum): customer=Joerg+Schwenk&address=Universitaetsstr+150&city=Bochum& g y state=NRW&country=DE&cardno=1234567890&expires=7/07& cc=mastercard&product=cheap&express=on Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 4 Formulare 4. Datei-Upload p ((aus Dehnhard): ) <form Method=POST Enctype=multipart/form-data A ti Action=/CGI/Perl/anwendungen/Checkhtml.pl> /CGI/P l/ d /Ch kht l l> <input Type=file Name=datei Size=40 Maxlength=100000> <p> p <input Type=submit Value="Upload!"> </form> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 5 XML und XSL 5. 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. 2. Beispiel: Tabellenkalkulationen XML sieht aus wie HTML, ist aber kein HTML 3. HTML hat Tags mit fester Bedeutung (z.B. muss <p> nicht „paragraph“ bedeuten Bei XML wird die Bedeutung der Tags durch eine bedeuten. Beschreibung festgelegt. XML ist Text, der aber nicht gelesen werden soll. Textformat dient nur zum leichteren Debuggen und Reparieren von Datenfiles. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 5 XML und XSL 5. 4 4. XML ist i t eine i Familie F ili von Technologien. T h l i 5. XML-Files sind größer als Binärfiles, aber das ist kein Problem. 6. Datenkompression von gespeicherten Files (z.B. WinZip) oder bei Übertragung löst das Problem. (Das stimmt nicht mehr ganz, wenn Verschlüsselung eingesetzt wird) XML ist neu, aber nicht ganz neu. 10. XML 1.0, Xlink (Hyperlinks), XSL (Style Sheets), XML Signature, ... 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 Beispiel XML-Beispiel <?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 XML Beispiel (2) - Baumstruktur XML-Beispiel <?xml version="1.0" standalone="yes"?> <conversation> <response> <greeting> Hello world! Hello, Stop the planet planet, I want to get off! Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Webseite XML-Webseite <?xml version="1 version 1.0 0" ?> <?xml-stylesheet type="text/xsl" href="book_list.xsl"?> <book_list> <book> <title> Moderne Verfahren der Kryptographie, 5. Aufl. </title> <author> A. Beutelspacher, J. Schwenk, K.-D. Wolfenstetter </author> <year> 2003 </year> </book> <book> <title> Sicherheit und Kryptographie im Internet, 2. Aufl. </title> <author> J. Schwenk </author> <year> 2005 </year> </book> </book_list> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Webseite XML-Webseite <?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> Titel</th> <th> Autor</th> <th> Jahr </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 XML Webseite XML-Webseite Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Signature Syntax and Processing XML-Signature http://www.w3.org/2000/02/xmldsig Gemeinsame Arbeitsgruppe von W3C und IETF Dokument beschreibt: Syntax einer digitalen Signatur in XML Verarbeitung einer digitalen Signatur in XML xmlns:ds='http://www.w3.org/2000/09/xmldsig#‘ l d 'htt // 3 /2000/09/ ld i #‘ PGP- oder S/MIME-Signaturen: Wie kann die Signatur überprüft werden? (Angabe von Hash Hash- und Signaturalgorithmus) XML XML-Signaturen Signaturen zusätzlich: Was wird signiert? Welche Teile davon? In welcher Form? Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Signature Syntax and Processing XML-Signature Drei Typen von Signaturen: Enveloping Signature <Signature> <Reference> <SignedElement> <EnvelopingElement> <Signature> <Reference> Enveloped Signature Detached Signature g cat.jpg jpg <Signature> <Reference> <Reference> <Reference> config.txt g authentic.xml Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XMLDSIG - Beispiel <Signature Id="MyFirstSignature" xmlns="http://www.w3.org/2000/02/xmldsig#"> g <SignedInfo> <CanonicalizationMethod Algorithm="http://.../WD-xml-c14n-20000119"/> <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 i Algorithm="http://www.w3.org/2000/02/xmldsig#sha1"/> i // / / / i # / <DigestValue>j6lwx3rvEPO0vKtMup4NbeVu8nk=</DigestValue> </Reference> </SignedInfo> <SignatureValue>MC0CFFrVLtRlk=...</SignatureValue> <KeyInfo> <KeyValue> <DSAKeyValue><P>...</P><Q>...</Q><G>...</G><Y>...</Y></DSAKeyValue> </KeyValue> </KeyInfo> y </Signature> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Encryption http://www.w3.org/Encryption/2001/ Ziel: Einbindung verschlüsselter Dateien und der dazu gehörenden Schlüsselinformation in XML Features: Klare Trennung zwischen verschlüsselten Schlüsseln und Daten (Warum?). Kompatibilität mit dem XML Signature Standard. Einschränkungen bei der Schachtelung von verschlüsselten Files, die sich aus dem XML-Standard ergeben. g xmlns:enc='http://www.w3.org/2001/04/xmlenc#‘ Es ist möglich, nur Teile eines Dokuments zu verschlüsseln hlü l Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Encryption EncryptedData Objekt: EncryptedData-Objekt: <EncryptedData (Id='')? (Type='')?> <EncryptionMethod/>? <ds:KeyInfo> <EncryptedKey/>? <ds:*/>? </ds:KeyInfo>? <CipherData> <CipherValue>(encrypted character data)</CipherValue>? <CipherReference p URI=''/>? / </CipherData> </EncryptedData> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Encryption – Beispiel Übertragung einer Kreditkartennummer <?xml version='1.0'?> <P <PaymentInfo tI f xmlns='http://example.org/paymentv2'> l 'htt // l / t 2'> <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 (2) Verschlüsselung des CreditCard-Elements CreditCard Elements <?xml version='1.0'?> <P <PaymentInfo tI f xmlns='http://example.org/paymentv2'> l 'htt // l / t 2'> <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> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit XML Encryption – Beispiel (3) Kredit-Limit Kredit Limit bleibt unverschlüsselt <?xml version='1.0'?> <PaymentInfo xmlns='http://example.org/paymentv2'> <Name>John h Smith<Name/> i h / <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> /PaymentInfo Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit 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> <I <Issuer>Bank >B k of f th the I Internet</Issuer> t t</I > <Expiration>04/02</Expiration> </CreditCard> </PaymentInfo> Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit