blob: 7585e24500ed9e938f5688a76360a3a7f3abe454 [file] [log] [blame]
<html xmlns:sec="http://www.xml-sicherheit.de">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="../format.css">
</head>
<body>
<h1>Präsentationsproblem</h1>
<p>Beim Signieren mit XML gilt die Redensart <em>What You See Is What You Sign (WYSIWYS)</em>. Also eigentlich genau das, was der Anwender erwartet: das was er sieht wird auch von ihm signiert. Das ist eine gefährliche
Behauptung wie das folgende Beispiel gleich zeigen wird. Nehmen wir z.B. ein XML-Dokument und dazu ein XSL-Stylesheet. Wird
die Signatur nur über das Daten-XML berechnet kann das Stylesheet ohne Auswirkung auf die Signatur ausgetauscht oder modifiziert
werden. Als Folge davon kann das angezeigte XML-Dokument erheblich vom Original abweichen, obwohl die Signatur über dem Daten-XML
immer noch gültig ist. Das Daten-XML wurde ja nicht verändert, mit dem Stylesheet können aber beliebig viele Transformationen,
z.B. Berechnungen, darauf angewendet werden. Diese Probleme sind bekannt und auch nicht rein auf XML beschränkt. Generell
spricht man hierbei vom Präsentationsproblem.
</p>
<p>Eine Lösung besteht darin, mit dem Daten-XML auch alle verbundenen XML-Dokumente (XSLT, Schema, DTD, ...) zu signieren. Ganz
so einfach lässt sich das Problem aber nicht aus der Welt schaffen. XSL-Stylesheets können weitere Stylesheets importieren
usw., das Berechnen der Signatur, in erster Linie das Zusammensuchen der XML-Dokumente, kann beliebig aufwändig und komplex
werden. Gleichzeitig müssen ja alle zu signierenden Ressourcen auch noch verfügbar (zugreifbar) sein.
</p>
<p>Die nächste auftretende Frage ist dann, wie dem Anwender ein ungültiges Stylesheet (das kann eines von vielen sein oder auch
alle) präsentiert wird. Sprich die Signatur über das XML-Dokument ist gültig, aber eines oder mehrere Stylesheets wurden nach
dem Signieren verändert oder sind einfach nicht mehr vorhanden. Die Herausforderung ist hier eine verständliche Anzeige für
den Anwender. Am einfachsten ist es sicherlich, die ganze Signatur als ungültig darzustellen. Nur ist das nicht ganz korrekt.
Wird dem Anwender jedoch mitgeteilt, dass Teile der Signatur ungültig sind, benötigt er umfangreichere XML-Kenntnisse als
er vielleicht hat. Weiterhin ist es ja auch so, dass nicht alle Manipulationen am Stylesheet eine (negative) Auswirkung auf
die Darstellung haben müssen.
</p>
<p>Die beste Lösung ist meiner Ansicht nach die Darstellung mit zwei Fehlerarten: das Daten-XML ist ungültig und/ oder eine zur
Darstellung verwendete Ressource ist ungültig bzw. nicht mehr erreichbar. Bei einem ungültigen Daten-XML ist der Fall klar.
Bei einem ungültigen Stylesheet sollte der Anwender auf das reine Daten-XML hingewiesen werden. Auch wenn der Anwender selbst
nicht über genügend Kenntnisse verfügt kann sich immer noch ein Experte die Daten ansehen und bewerten. In jedem Fall nehmen
aber die Fehlerarten zu, die Verantwortung wie letztlich damit umgegangen wird, liegt aber beim Anwender.
</p>
</body>
</html>