Sichere templategestützte Verarbeitung von XML-Dokumenten

Post on 01-Nov-2014

450 views 2 download

Tags:

description

 

Transcript of Sichere templategestützte Verarbeitung von XML-Dokumenten

Sichere templategestützte Verarbeitung von XML-Dokumenten

Fakultät Informatik, Institut für Software- und Multimediatechnik, Lehrstuhl Softwaretechnologie

Dresden, 1. Juli 2011

Falk Hartmann

Verteidigung der Dissertation

Sichere templategestützte Verarbeitung von XML-Dokumenten

Motivierendes Beispiel

Fehler Nicht-wohlgeformtes XML Verletzung einfacher Typen Strukturell falsches XHTML

Folie 2

Sichere templategestützte Verarbeitung von XML-Dokumenten

Begrifflichkeiten

Folie 3

Sichere templategestützte Verarbeitung von XML-Dokumenten

Begrifflichkeiten

Folie 4

Sichere templategestützte Verarbeitung von XML-Dokumenten

Agenda

▪ Motivierendes Beispiel und Begrifflichkeiten

Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung

▪ Beiträge der Arbeit und Fazit

Folie 5

Sichere templategestützte Verarbeitung von XML-Dokumenten

Agenda

▪ Motivierendes Beispiel und Begrifflichkeiten

Sichere Template-Verarbeitung

Entwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung

▪ Beiträge der Arbeit und Fazit

Folie 6

Sichere templategestützte Verarbeitung von XML-Dokumenten

Ziele

Sichere ErstellungRückmeldung an den Autor über die Richtigkeit des Ausprägungsergebnisses in Bezug auf die Zielsprache

Sichere AusprägungKlare und ausreichende Rückmeldung von bei der Ausprägung auftretenden Problemen

Trennung der BelangeMöglichkeit arbeitsteiliger Entwicklung

Breite AnwendbarkeitVermeidung von Einschränkungen in Bezug auf Ziel- und Anfragesprachen sowie Anwendungsgebiete

Nutzung existierender StandardsWiederverwendung bestehender Sprachen, Werkzeuge und Prozesse

Folie 7

Sichere template-gestützte Verarbeitung

Sichere templategestützte Verarbeitung von XML-Dokumenten

Anforderungen

Erhaltung der Einschränkungen der ZielspracheÜbernehmen von Verboten der Zielsprache in die Templatesprache

Abdeckung der ZielspracheErmöglichen der Erzeugung aller Sätze der Zielsprache

AbleitbarkeitAutomatisches Ableiten der Grammatik der Templatesprache aus der Grammatik der Zielsprache

SteueranweisungenErlauben bedingter und wiederholter Ausprägung von Teilen der Templates

Typsicherheit der AusprägungsdatenErzwingen oder Überprüfen der korrekten Typen der Ausprägungsdaten

Unabhängigkeit von der AnfragespracheVermeiden von Annahmen über die Anfragesprache

Folie 8

Sichere templategestützte Verarbeitung von XML-Dokumenten

Ziele → Anforderungen

Beispiel:Trennung der Belange → Steueranweisungen:

Fehlende Steueranweisungen resultieren i.d.R. in mangelnder Trennung der Belange

Folie 9

Sichere templategestützte Verarbeitung von XML-Dokumenten

Lösungsarchitektur

Folie 10

Sichere templategestützte Verarbeitung von XML-Dokumenten

Anforderungen → Lösungsarchitektur

Beispiel:Unabhängigkeit von der Anfragesprache → Bestimmung der Ausprägungsdaten:

Spezielle Lösungsarchitekturkomponente zur Bestimmung der Ausprägungsdaten erleichtert Anpassung an Anfragesprachen

Folie 11

Sichere templategestützte Verarbeitung von XML-Dokumenten

Agenda

▪ Motivierendes Beispiel und Begrifflichkeiten

Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache

Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung

▪ Beiträge der Arbeit und Fazit

Folie 12

Sichere templategestützte Verarbeitung von XML-Dokumenten

Entwurf einer generischen Slot Markup-Sprache

XTL – XML Template LanguageUniversell, syntax- und semantik-erhaltendAdressiert Fehlertyp

Sprachumfang• Erzeugung von Attributwerten, Text (xtl:attribute, xtl:text)• Bedingte und wiederholte Ausführung (xtl:if, xtl:for-each)• Makros • Einbettung kompletter XML-Fragmente• Unterstützung für multiple Ausprägungsdatenquellen• Unterstützung für mehrschrittige Ausprägung

Syntax• XML Schema

Semantik• Denotationell formuliert in Haskell• Zusätzlich translationale und operationelle Beschreibung

Folie 13

Sichere templategestützte Verarbeitung von XML-Dokumenten

Agenda

▪ Motivierendes Beispiel und Begrifflichkeiten

Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-Erstellung

Flexible, effiziente und sichere Template-AusprägungValidierung

▪ Beiträge der Arbeit und Fazit

Folie 14

Sichere templategestützte Verarbeitung von XML-Dokumenten

Grundidee der sicheren Erstellung

Adressiert Fehlertypen und

Folie 15

Sichere templategestützte Verarbeitung von XML-Dokumenten

Aufteilung der Einschränkungen

Folie 16

XML Schema ist nicht ausdrucksstark genug zur Beschreibung der Templatesprache → CXSD!

Sichere templategestützte Verarbeitung von XML-Dokumenten

Aufteilung der Einschränkungen

Zielsprachengrammatik

Erforderliche oder optionale Attribute

Templatesprachengrammatik

• Umwandlung in optionale Attribute• Erlauben von xtl:attribute im

Inhaltsmodell des Elternknotens• Einschränkung der erzeugbaren

Attribute (Namen)

Einschränkung der Ausprägungsdaten

• Typüberprüfung entsprechend Typ des Attributes

Folie 17

Sichere templategestützte Verarbeitung von XML-Dokumenten

Aufteilung der Einschränkungen

Zielsprachengrammatik

Simple Content (durch “einfache” Inhaltstypen eingeschränkter Elementinhalt)

Templatesprachengrammatik

• Umwandeln in Mixed Content• Erlauben von xtl:text im

Inhaltsmodell• Einschränkung des Textinhalts

entsprechend Inhaltstyp

Einschränkung der Ausprägungsdaten

• Typüberprüfung entsprechend Inhaltstyp

Folie 18

Sichere templategestützte Verarbeitung von XML-Dokumenten

Aufteilung der Einschränkungen

Zielsprachengrammatik

Elemente mit Kardinalität {0,1} oder {n,m}

Templatesprachengrammatik

• Ersetzen durch Alternative zwischen Ursprungselement und xtl:if oder xtl:for-each

• Einschränkung des Inhalts von xtl:if bzw. xtl:for-each auf Ursprungselement

Einschränkung der Ausprägungsdaten

• Überprüfung der Anzahl der Wiederholungen

Folie 19

Sichere templategestützte Verarbeitung von XML-Dokumenten

Agenda

▪ Motivierendes Beispiel und Begrifflichkeiten

Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-Ausprägung

Validierung

▪ Beiträge der Arbeit und Fazit

Folie 20

Sichere templategestützte Verarbeitung von XML-Dokumenten

Eigenschaften der Template-Ausprägung

Flexibel• Plug in-Mechanismus für Anfragesprachen• Implementierungen für XPath, SPARQL, OCL

Effizient• Implementierung mit StAX (JSR-173)• Speicherbedarf wächst linear mit Anzahl der Knoten in größter zu

wiederholender Einheit im Template• Zeit wächst linear mit Größe des Ausprägungsergebnisses

Sicher• Ausprägungsdaten werden auf Typ und Multiplizität geprüft• Alternativer Ansatz: Generierung einer Template-Schnittstelle

Folie 21

Sichere templategestützte Verarbeitung von XML-Dokumenten

Generierung einer Template-Schnittstelle

Grundidee• Nutzung der Ausdrücke der Anfragesprache zur Erzeugung eines Modells

der Ausprägungsdaten• Gewährleistung der Richtigkeit der Ausprägungsdaten durch Transfer der

Datentypen aus dem XML- in das Java-Typsystem• Analog zur XML binding-Technologien (z.B. JAXB), aber neu für Templates

Konsequenzen• Einschränkung der Abfragesprache XPath auf umkehrbare Ausdrücke

• Beispiel:XPath-Ausdruck //a -> nicht anwendbar auf Java-Objekt-Modell

• Umkehrung der Datenbezugsrichtungpush statt pull-Strategie

Folie 22

Sichere templategestützte Verarbeitung von XML-Dokumenten

Agenda

▪ Motivierendes Beispiel und Begrifflichkeiten

Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung

▪ Beiträge der Arbeit und Fazit

Folie 23

Sichere templategestützte Verarbeitung von XML-Dokumenten

Validierungsmittel

Implementierung eines PrototypsAufteilung der Einschränkungen, Template-Validierung und -Ausprägung, Template Schnittstellen-Generierung

Testsuiteentsprechend ImplementierungÜbereinstimmung Template-Ausprägung mit denotationeller und translationaler Semantik

Anwendung der ImplementierungEinsatz in den Projekten SNOW, FeasiPLe und EMODE

Beweis der Erhaltung der Einschränkungen der ZielspracheInduktionsbeweis ausgehend von Algorithmus zur Aufteilung der Einschränkungen

Performance-MessungenLaufzeit der Template-Validierung, Laufzeit und Speicherbedarf der Template-Ausprägung, Vergleichsmessung mit JSP und XSL-T

Folie 24

Sichere templategestützte Verarbeitung von XML-Dokumenten

Validierungsmittel → Ziele

Beispiel:Performance-Messungen → Breite Anwendbarkeit:

Ist der Einsatz des Ansatzes praktisch vertretbar?

Folie 25

Sichere templategestützte Verarbeitung von XML-Dokumenten

Testsuite

Überprüfung der Implementierung im Hinblick auf die Ziele Sichere Erstellung und Sichere Ausprägung

• Vergleich der Ergebnisse der verschiedenen Komponenten mit hinterlegten, geprüften Ergebnissen

• Prüfung der Aufteilung der Einschränkungen, Validierung, Ausprägung, Generierung von Template-Schnittstellen und Round-Trip-Test

Folie 26

Sichere templategestützte Verarbeitung von XML-Dokumenten

Beweis der Erhaltung der Einschränkungen

VoraussetzungTemplate, welches der Template-Grammatik genügtAusprägungsdaten, welche den entsprechenden Einschränkungen genügen

BehauptungAusprägungsergebnis genügt der Zielsprachengrammatik

Folie 27

Sichere templategestützte Verarbeitung von XML-Dokumenten

Performance-Messungen

Laufzeit der TemplatevalidierungBasis: Template mit 2n Kindknoten mit erforderlichem Attribut,

• n Attribute direkt spezifiziert• n-1 Attribute mittels xtl:attribute erzeugt• 1 Attribute fehlt und wird nicht erzeugt

(Messung auf Intel 2 Duo 2.8 GHz, 4 MB RAM, MacOS 10.6.7, JDK 1.6.0_24)

Folie 28

Sichere templategestützte Verarbeitung von XML-Dokumenten

Agenda

▪ Motivierendes Beispiel und Begrifflichkeiten

Sichere Template-VerarbeitungEntwurf einer generischen Slot Markup-Sprache Unterstützung der sicheren Template-ErstellungFlexible, effiziente und sichere Template-AusprägungValidierung

▪ Beiträge der Arbeit und Fazit

Folie 29

Sichere templategestützte Verarbeitung von XML-Dokumenten

Beiträge

Weitere Beiträge• Definition des Begriffes Template• Klassifikation existierender Template-Ansätze

Entwurf einer universellen Slot Markup-Sprache• Syntax- und semantik-erhaltend• Unabhängig von konkreter XML-Zielsprache• Unabhängig von Anfragesprache• Denotationell definierte Semantik

Sichere Erstellung und Ausprägung• Überprüfung der Ausprägungsergebnisse soweit als möglich zur

Erstellungszeit• Direkte Überprüfung der Ausprägungsdaten zur Ausprägungszeit• Alternative: Generierung einer Template-Schnittstelle

Folie 30

Sichere templategestützte Verarbeitung von XML-Dokumenten

Fazit

Sichere Erstellung und Ausprägung sind mit dem gezeigten Ansatz möglich!

- Trennung der Belange, Breite Anwendbarkeit gegeben- Nutzung existierender Standards eingeschränkt erreicht

- Fehlerklasse adressiert durch Sprachentwurf der XTL- Fehlerklassen und adressiert durch Aufteilung der Einschränkungen

Folie 31

Sichere templategestützte Verarbeitung von XML-Dokumenten

Vielen Dank für Ihre Aufmerksamkeit!

Folie 32

Sichere templategestützte Verarbeitung von XML-Dokumenten

Verwandte Arbeiten

Templates: Mittel zur Erzeugung konkreter Syntax- Modell-zu-Text Transformationen- Anwendungsgebiete: Webapplikationen, Codegenerierung- Einfache Nutzung existierender Fragmente der konkreten Syntax

Verwandte Ansätze- Aspekt-orientierte Programmierung (XUpdate)

- Sicherheit ist Forschungsthema

- Transformationstechniken (XSL-T)- Erhalten die Syntax der Zielsprache nicht- Hoher Lernaufwand

- Binding-Techniken (JAXB)- Sicher per Definition- Fragmente konkreter Syntax müssen in anderen technologischen

Raum übersetzt werden- Verletzung der Trennung der Belange

Folie 33

Sichere templategestützte Verarbeitung von XML-Dokumenten

Verwandte Arbeiten (Vergleich)

Quelle 1 Quelle 2

Ziel

+

JSP

XUpd

ate

XSL-T

JAXB

XML Java any XML

XML(core)

XML(advice)XUpdate XML

XSL-T + XML XML’XPath XML

Java anyJava XML

Folie 34

Sichere templategestützte Verarbeitung von XML-Dokumenten

Definition Template-Begriff

Folie 35

Sichere templategestützte Verarbeitung von XML-Dokumenten

Klassifikation Template-Ansätze (1)

1. Target Language Awareness of Slot Markup- Syntax preserving

- Semantic preserving (TAL)- Semantic abusing (XMLC)

- Syntax destructing (Perl)2. Generality of Slot Markup

- Specific for a particular target language- Generic

3. Entanglement Index [Parr, 2006]- No modification of the model- No computations- No comparisons- No type assumptions- Separation of concerns

4. Instantiation Data Access Strategy- Push- Pull

Folie 36

Sichere templategestützte Verarbeitung von XML-Dokumenten

Klassifikation Template-Ansätze (2)

5. Query Language- Opaque vs. significant- Declarative vs. imperative- Domain specific vs. general purpose

6. Instantiatian Technique- Compiler- Interpreter

7. Reuse- Macros- Group inheritance

8. Further Features- Group interfaces- Newline handling

Folie 37

Sichere templategestützte Verarbeitung von XML-Dokumenten

XTL - Beispiel

Folie 38

Sichere templategestützte Verarbeitung von XML-Dokumenten

Anwendung der Implementierung

SNOW- Benutzung der XTL als einfache Sprache für Dokumentationsautoren bei

EADS- Zwei Hauptkomponenten basierend auf der XTLEngine (Datenschicht,

Controller)- EADS Ingenieure schätzen Einfachheit der XTL

EMODE- Komplexe Transformationen auf Basis der XTLEngine- Nutzung der XTL zur Erzeugung von MXML (Flex) Applikationen

FeasiPLe- Codegenerierung aus Ontologien mittels SPARQL-Abfragen- Emulation der transitiven Hülle innerhalb eines PHP → Erweiterung von

SPARQL um die Fähigkeit zur Hüllenbildung

Folie 39

Sichere templategestützte Verarbeitung von XML-Dokumenten

SNOW-Architektur

Folie 40

Sichere templategestützte Verarbeitung von XML-Dokumenten

Zeitbedarf Validierung

Folie 41

Sichere templategestützte Verarbeitung von XML-Dokumenten

Zeitbedarf Ausprägung

Folie 42

Sichere templategestützte Verarbeitung von XML-Dokumenten

Vergleich Zeitbedarf Ausprägung

Folie 43

Sichere templategestützte Verarbeitung von XML-Dokumenten

Speicherbedarf (1)

Folie 44

Sichere templategestützte Verarbeitung von XML-Dokumenten

Speicherbedarf (2)

Folie 45

Sichere templategestützte Verarbeitung von XML-Dokumenten

Fallunterscheidung Sichere Erstellung

Folie 46

Sichere templategestützte Verarbeitung von XML-Dokumenten

Klassifikation von Schemasprachen

1. Regular Tree Grammars (Relax NG)2. Restrained-Competition Tree Grammars3. Single-Type Tree Grammars (XML Schema)4. Local Tree Grammars (DTD)

Folie 47

Sichere templategestützte Verarbeitung von XML-Dokumenten

Vertikale und horizontale XML-Pipeline

Folie 48

Sichere templategestützte Verarbeitung von XML-Dokumenten

Pull parser vs. Push parser

Folie 49

Sichere templategestützte Verarbeitung von XML-Dokumenten

Push strategy vs. Pull strategy

Folie 50

Sichere templategestützte Verarbeitung von XML-Dokumenten

ReadWindow Operationen

Folie 51

Sichere templategestützte Verarbeitung von XML-Dokumenten

Auswirkungen unpassender Ausdrucksstärke

Folie 52

Sichere templategestützte Verarbeitung von XML-Dokumenten

Sichere Erstellung: Prozessänderung

Folie 53

Sichere templategestützte Verarbeitung von XML-Dokumenten

Grundlage der operationellen Semantik

Folie 54

Sichere templategestützte Verarbeitung von XML-Dokumenten

Prinzip der translationalen Semantik

Folie 55

Sichere templategestützte Verarbeitung von XML-Dokumenten

Round-trip Test

Folie 56

Sichere templategestützte Verarbeitung von XML-Dokumenten

OCL Constraint für erforderliche Attribute

Folie 57

Sichere templategestützte Verarbeitung von XML-Dokumenten

OCL Constraint für Textinhalte

Folie 58

Sichere templategestützte Verarbeitung von XML-Dokumenten

Unique Particle Attribution

XML Schema Part 1: StructuresA content model must be formed such that during validation of an element information item sequence, the particle component content contained directly, indirectly or implicitly therein with which to attempt to validate each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.

Folie 59