XML- und Webservice- Sicherheit - Ruhr

Werbung
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“
Ö
&
é
Ö
&
é
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>Ü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
Herunterladen