libeform
Ein offenes Formular-Dateiformat
verständlich für Menschen und Maschinen.
eForm ist ein offenes Dateiformat für elektronische Formulare. Es verbindet eine für Menschen lesbare Vorschau mit strukturierten Formulardaten, die automatisch verarbeitet, validiert und importiert werden können.
Das Problem
Haben Sie schon einmal ein Formular zugemailt bekommen und konnten nichts hineintippen, weil es praktisch eine Bilddatei war?
Sind Sie es leid, immer und immer wieder die gleichen Inhalte in ein regelmäßiges Formular einzugeben?
Wachsen Ihnen die Berge der einzugebenden retournierten Formulare über den Kopf?
Was wäre, wenn es einen Dateityp für elektronische Formulare gäbe, den man sowohl beim Ausfüllen als auch beim Einlesen mit einer Datenbank verbinden und so beide Prozesse automatisieren könnte?
.eform wurde genau dafür entwickelt!
Zum Anschauen
eform-Dateien sind so konstruiert, dass sie auf nahezu jedem Computer angezeigt werden können, ohne dass dafür eine spezielle Software installiert werden muss.
Angezeigt wird dabei lediglich eine Vorschau des aktuellen Bearbeitungsstandes. Eine weitere Bearbeitung oder das Ausfüllen des Formulars ist ohne entsprechende Software nicht möglich.
Sie basieren auf SVG-Bilddateien und lassen sich deshalb mit den meisten Webbrowsern und vielen Bildbetrachtern öffnen.
Probieren Sie es einfach aus: Klicken Sie auf eines der nachfolgenden Beispielformulare und öffnen Sie es in Ihrem Browser. Falls die Datei nicht automatisch angezeigt wird, laden Sie die Datei herunter und wählen Sie „Öffnen mit …“ und dann Ihren bevorzugten Browser, beispielsweise Firefox, Chrome oder Edge.
Beispielformulare
ein paar
- leere
- halb ausgefüllte
- ausgefüllte
Formulare zum Ausprobieren im Web Viewer und im Web Importer weiter unten
Formulare
Klick auf das eform-Symbol führt das gehostete Formular im Browser aus. Klick auf das Github-Symbol zeigt den von dort geladenen Quelltext des Formulares an.
-
Simple Form (leer)
-
Simple Form (halb gefüllt)
-
Simple Form (gefüllt)
-
Comprehensive Form (leer)
-
Comprehensive Form (halb gefüllt)
-
Comprehensive Form (gefüllt)
auch verfügbar auf
https://github.com/tellmi/libeform
Die Web Apps
Jetzt kennen wir die Vorschau. Doch wie werden eform-Dateien ausgefüllt oder importiert?
Die nachfolgenden Anwendungen sind Referenzanwendungen für eform und wurden für ein internationales Publikum entwickelt. Daher sind sie in englischer Sprache gehalten. Da sie jedoch weitgehend textbasiert sind, können moderne Browser die Inhalte meist problemlos auf Deutsch anzeigen oder übersetzen.
Bei ihrer Entwicklung stand die Funktionalität im Vordergrund, nicht das Design. Dennoch sind beide Werkzeuge vollständig nutzbar und wurden intensiv für die Entwicklung und Tests von eform v1.0 eingesetzt.
Sowohl der web_viewer als auch der web_importer basieren auf libeform, der Referenzbibliothek für eform. Sie stellt die gemeinsame Funktionalität zur Verarbeitung, Validierung und Interpretation von eform-Dateien bereit und bildet die Grundlage für weitere Implementierungen. Derzeit existiert libeform in JavaScript. Weitere Implementierungen können auf Basis von libeform entstehen.
- Der web_viewer öffnet beliebige eform-Dateien direkt im Browser. Formulare können ausgefüllt, gespeichert, erneut geladen und später weiterbearbeitet werden.
- Der web_importer zeigt seine Stärke insbesondere beim Import mehrerer ausgefüllter Versionen eines Formulars. Die eingelesenen Daten werden in einer Tabelle zusammengeführt und können anschließend als CSV-Datei exportiert werden.
Er kann jedoch noch viel mehr. Wenn Sie eines der fehlerhaften Formulare laden, die oben zum Download bereitstehen, erstellt er einen detaillierten Fehlerbericht. Darüber hinaus versucht er, bestimmte Probleme automatisch zu korrigieren, sofern das Formular dadurch weiterhin eindeutig interpretiert werden kann.
Web Viewer
Web Importer
Bulk Import
Der wahre Nutzen des Importers eröffnet sich erst, wenn man mehrere Formulare auf einmal importiert.
Alle importierten Formularwerte werden in eine Tabelle eingelesen und können als CSV heruntergeladen werden.
Zu diesem Zweck können Sie die hier verlinkte ZIP-Datei herunterladen und auf Ihrem Rechner entpacken. Die darin enthaltenen Formulare können Sie dann bequem importieren.
eform Test Suite
eForm-Dateien basieren auf einer SVG-Datei, in die die eigentlichen Formulardaten als HEX-ZIP-Blob in einem Kommentar eingebettet werden. Dadurch kann nahezu jeder Computer die Formularvorschau anzeigen, ohne zusätzliche Software zu benötigen.
Wie jedes Dateiformat können jedoch auch eForms Ziel von Hackerangriffen werden. Ebenso können fehlerhafte Implementierungen oder beschädigte Dateien die Struktur eines Formulars beeinträchtigen.
Aus diesem Grund wurden bei der Entwicklung von eForm und der zugehörigen Verarbeitungs-Pipeline zahlreiche Fehler- und Angriffsszenarien berücksichtigt. Beim Öffnen einer eForm-Datei werden diese automatisch geprüft. Manche Probleme führen zur Ablehnung des Formulars, andere können sogar automatisch entschärft werden.
Die Test Suite unterteilt sich in zwei Bereiche:
- fehlerhafte Formularstrukturen
- Hackerangriffe auf die SVG-Bestandteile
fehlerhafte Formularstrukturen
eForms besitzen eine klar definierte interne Struktur. Wird diese verletzt, kann das Formular nicht mehr zuverlässig verarbeitet werden.
Typische Fehlerquellen sind:
- Ungültige Feld-IDs (Felder müssen dem Schema f1, f2, f3, ... folgen)
- Lücken in der Feldnummerierung
- Fehlerhafte Seitennummerierung (page1.svg, page2.svg, ...)
- Inkonsistenzen zwischen schema.json und den Layout-Dateien
- Ungültige oder zirkulare Formeln
- Referenzen auf nicht vorhandene Felder
- Fehlende Pflichtdateien innerhalb des Containers
- Beschädigte ZIP-Strukturen
Ein häufig diskutierter Angriffsvektor ist sogenanntes ZIP Path Traversal. Dabei versucht ein Angreifer, beim Entpacken Dateien außerhalb der vorgesehenen Verzeichnisstruktur abzulegen.
Bei eForm ist dieser Angriff bereits konzeptionell ausgeschlossen: Formulare werden während der Verarbeitung ausschließlich im Arbeitsspeicher (RAM) entpackt und niemals automatisch auf der Festplatte gespeichert.
Da Strukturfehler nicht zuverlässig automatisch korrigiert werden können, führen sie in der Regel zur Ablehnung des Formulars.
Die bereitgestellten Beispieldateien enthalten gezielt konstruierte Fehler, um die Prüfmechanismen demonstrieren und nachvollziehen zu können.
SVG-Angriffe
Jede eForm-Datei kann bis zu drei SVG-Bestandteile enthalten:
- Die äußere SVG-Vorschau (immer vorhanden)
- Das Formularlayout (layout/page1.svg, immer vorhanden)
- Optionale SVG-Dateien als Formularinhalt, beispielsweise handschriftliche Unterschriften
Aus diesem Grund werden alle SVG-Sicherheitsprüfungen auf sämtliche SVG-Bestandteile angewendet.
Die bereitgestellten Testformulare enthalten die jeweilige Manipulation an allen drei Stellen. Wird eine Attacke erkannt, erzeugt der Sicherheitsreport daher typischerweise drei entsprechende Meldungen.
Was ist denn dann eine "SVG-Attacke"?
SVG ist nicht nur ein Bildformat, sondern eine XML-basierte Beschreibungssprache für Grafiken. Die SVG-Spezifikation erlaubt unter anderem:
- das Einbinden externer Ressourcen
- das Laden von Schriftarten
- die Verwendung von CSS
- die Ausführung von Skripten
- die Einbettung aktiver Inhalte
Ein Angreifer könnte daher eine SVG-Datei manipulieren, sodass beim Anzeigen externe Inhalte nachgeladen oder Skripte ausgeführt werden.
Dieses Risiko besteht grundsätzlich bei jeder SVG-Datei aus dem Internet – unabhängig davon, ob sie in einem Browser oder einem Bildbetrachter geöffnet wird.
Während viele Anwendungen solche Inhalte lediglich blockieren, verfolgt libeform einen anderen Ansatz:
- Gefährliche Inhalte werden erkannt
- Die betroffenen Elemente werden entfernt
- Das Formular bleibt weiterhin verwendbar
- Der Benutzer wird über den Fund informiert
- Beim Speichern wird die bereinigte Version übernommen
Dadurch können schädliche SVG-Inhalte entfernt werden, ohne das eigentliche Formular unbrauchbar zu machen.
Erkannte SVG-Angriffsvektoren
libeform erkennt und entfernt unter anderem:
- <script>-Elemente
- Event-Handler (onclick, onload, ...)
- JavaScript-URLs
- Data-URLs
- Externe Ressourcen
- foreignObject-Elemente
- Externe CSS-Referenzen
Verschleierungstechniken (Obfuskation) stellen dabei nur ein begrenztes Risiko dar, da libeform nicht den Rohtext analysiert, sondern den bereits vom XML-Parser erzeugten DOM-Baum untersucht. Kodierte oder maskierte Inhalte werden daher in der Regel bereits vor der eigentlichen Sicherheitsprüfung aufgelöst.
Die nachfogend vorgestellten SVG-Attacken enthalten die genauen Befehlsstrukturen, verweisen jedoch nie auf real existierende URLs, sondern immer auf nicht existierende Beispiele.
Auf der letzten Karte hier können Sie eine ZIP mit allen Arten von problematischen Formularen herunterladen, auf Ihrem Computer entpacken und dann versuchen Sie entweder im Web Viewer oder im Web Importer zu laden.
Für wen ist eForm gedacht?
eForm richtet sich an alle Organisationen, die Formulare bereitstellen, ausfüllen lassen und die zurückgesendeten Daten anschließend weiterverarbeiten müssen.
Dazu zählen insbesondere Behörden auf kommunaler, Landes- und Bundesebene, Unternehmen jeder Größe, Bildungseinrichtungen, Verbände und Vereine.
Überall dort, wo Formulare regelmäßig ausgefüllt, geprüft, archiviert oder in Fachverfahren übernommen werden müssen, kann eForm helfen, manuelle Arbeitsschritte zu reduzieren und Prozesse zu automatisieren.
Da eForm-Dateien als gewöhnliche Dateien übertragen werden können, lassen sie sich in bestehende Kommunikations- und Sicherheitsinfrastrukturen integrieren. Dies ermöglicht die Nutzung etablierter Verfahren wie Verschlüsselung, digitale Signaturen oder bestehender Fachportale (z. B. Mein Justizpostfach), ohne zusätzliche Formularserver oder öffentlich erreichbare Schnittstellen betreiben zu müssen. Dadurch können bestehende Sicherheitskonzepte weitergenutzt und die Angriffsfläche einer Lösung reduziert werden.
.eform wurde genau dafür entwickelt!