XML und Webservice XML - Lehrstuhl für Netz

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