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