# WebDAV

WebDAV / HTTP im TCP/IP-Protokollstapel: :
| Anwendung | WebDAV / HTTP | WebDAV / HTTP | WebDAV / HTTP | WebDAV / HTTP | WebDAV / HTTP |
| Transport | TCP | TCP | TCP | TCP | TCP |
| Internet | IP (IPv4, IPv6) | IP (IPv4, IPv6) | IP (IPv4, IPv6) | IP (IPv4, IPv6) | IP (IPv4, IPv6) |
| Netzzugang | Ethernet | Token Bus | Token Ring | FDDI | … |
WebDAV (Web-based Distributed Authoring and Versioning) ist ein Netzwerkprotokoll zur Bereitstellung von Dateien über das Internet. Es basiert auf dem Hypertext Transfer Protocol (HTTP/1.1), unterstützt mittlerweile aber auch HTTPS. Mit WebDAV können ganze Verzeichnisse übertragen werden. Zudem ist eine Versionskontrolle spezifiziert. WebDAV ist definiert im Standard RFC 4918. Auf WebDAV bauen unter anderem die Protokolle CalDAV und CardDAV auf, welche zur Synchronisation von Kalender- bzw. Adressdaten verwendet werden.

## Vorteile von WebDAV

Durch die enorme Verbreitung des World Wide Web zählt der von HTTP genutzte Port 80 (HTTPS: Port 443) zu den Ports, die bei Firewalls in der Regel nicht blockiert werden. Während bei anderen Übertragungsmethoden wie dem File Transfer Protocol (FTP) oder SSH (in Verbindung mit scp oder SFTP) oftmals zusätzlich Ports der Firewall geöffnet werden müssen, ist das bei WebDAV nicht nötig, da es auf HTTP aufbaut und daher nur Port 80 benötigt. Das Öffnen von zusätzlichen Ports einer Firewall erhöht den Zeit- und Arbeitsaufwand für Systemadministratoren und birgt unter Umständen zusätzliche Sicherheitsrisiken. Zudem kann der Server innerhalb eines bestehenden HTTP-Servers implementiert werden.
Mittlerweile gibt es für jedes Betriebssystem (inklusive Smartphones) direkte WebDAV-Implementierungen, die es ermöglichen, WebDAV ins System einzubinden oder zumindest per Dateimanager darauf zuzugreifen.
Da auch Benutzerrechte unterstützt werden, ist es eine echte und weitaus sicherere Alternative gegenüber Samba- oder Windows-Freigaben, besonders beim Fernzugriff.

## Geschichte

Drei Arbeitsgruppen der Internet Engineering Task Force haben an WebDAV gearbeitet, um auf der Basis von HTTP Netzwerk-Standards zu schaffen, mit denen Dokumente und Dateien im Netzwerk verändert und geschrieben werden können. Diese Gruppen sind die WebDAV Working Group, die DASL Working Group und die Delta-V Working Group.

### WebDAV-Arbeitsgruppe

Die WebDAV-Arbeitsgruppe wurde initiiert von Jim Whitehead, Mitglied des W3C, um eine Diskussion über Distributed Authoring im World Wide Web zu starten. Es war die ursprüngliche Vision des WWW, wie sie von Tim Berners-Lee vertreten wurde, dass das Web ein sowohl lesbares als auch editierbares Medium sein sollte, und Berners-Lees erster Webbrowser, genannt WorldWideWeb, war tatsächlich dazu in der Lage, Seiten auch permanent zu editieren. Die massive Verbreitung des Web in den 1990er Jahren ließ den Gedanken des Distributed Authoring jedoch untergehen, sodass es sich zu dem heutigen, weitgehend nur lesbaren Medium entwickelte. Allerdings enthalten auch die heutigen HTTP-Spezifikationen noch die HTTP-Requests PUT und DELETE, die jedoch von den allermeisten Webservern mit dem HTTP-Statusfehler „405 Method Not Allowed“ abgelehnt werden. Whitehead und seine Mitstreiter haben sich im Rahmen der WebDAV-Arbeitsgruppe das Ziel gesetzt, diese Beschränkung aufzuheben.
Die Gruppe, die sich dann im Rahmen eines W3C-Meetings im Dezember 1995 traf, entschied sich dafür, dass die beste Vorgehensweise die Gründung einer IETF-Arbeitsgruppe wäre. Die IETF erschien am nächsten liegend, weil das HTTP dort standardisiert war und man annahm, dass das letztendliche Ergebnis dieser Arbeitsgruppe eine Erweiterung von HTTP sein würde.
Als die Arbeit am Protokoll im November 1996 begann, wurde klar, dass eine Behandlung sowohl des Aspekts des Distributed Authorings als auch der Versionskontrolle zu viel auf einmal wäre und dass die Aufgaben auf mehrere Gruppen verteilt werden müssten. Die WebDAV-Arbeitsgruppe entschied sich dafür, sich zunächst auf Distributed Authoring zu konzentrieren und sich den Versionskontrollmechanismus für später aufzuheben. Einige Mitglieder meinten daraufhin scherzhaft, dass die Gruppe besser in WebDA umbenannt werden solle.
Aus der WebDAV-Arbeitsgruppe sind bis heute mehrere Dokumente hervorgegangen:

#### Requirements for a Distributed Authoring and Versioning Protocol for the World Wide Web, RFC 2291

    eine Sammlung von Anforderungen

#### HTTP Extensions for Distributed Authoring – WebDAV, RFC 2518

    das (ursprüngliche) Basis-Protokoll

#### Web Distributed Authoring and Versioning (WebDAV) Ordered Collections Protocol, RFC 3648

    Sortierung von Verzeichniseinträgen

#### Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol, RFC 3744

    Zugriffsrechte

#### Quota and Size Properties for Distributed Authoring and Versioning (DAV) Collections, RFC 4331

    Quotas

#### Web Distributed Authoring and Versioning (WebDAV) Redirect Reference Resources, RFC 4437

    Behandlung von „Redirects“

#### HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV), RFC 4918

    eine aktualisierte Fassung des Basisprotokolls
Die WebDAV-Arbeitsgruppe wurde im Frühjahr 2007 aufgelöst.

### Die Arbeitsgruppen DASL und Delta-V

Aus der WebDAV-Gruppe gingen weitere IETF-Arbeitsgruppen hervor, zu denen auch die DAV Searching and Locating-Gruppe (DASL) und die Web Versioning and Configuration Management (Delta-V)-Arbeitsgruppe gehören. Die DASL produzierte nie einen offiziellen Standard, ein Entwurf wurde allerdings außerhalb der Arbeitsgruppe weiterentwickelt und liegt nun als RFC 5323 vor. Die Delta-V definierte die Versioning-Erweiterungen für WebDAV (RFC 3253), mit denen sich WebDAV nun mit Recht WebDAV nennen darf.

## Technische Hintergründe

Das WebDAV-Protokoll erweitert das vorhandene Hypertext Transfer Protocol um einen Satz neuer Methoden und Header-Attribute.
Zusätzliche Anfrage-Methoden, die von WebDAV-konformen Webservern behandelt werden müssen :
| HTTP-Methode | Beschreibung |
| PROPFIND | wird benutzt, um Eigenschaften, abgelegt als XML, einer Ressource zu erfahren. Außerdem wird sie benutzt („überladen“), um die Verzeichnisstruktur eines entfernten Systems zu ermitteln |
| PROPPATCH | ändert und löscht mehrere Eigenschaften einer Ressource in einer einzigen Anfrage (einem „atomaren Akt“) |
| MKCOL | erstellt ein Verzeichnis (bei WebDAV „Collection“ genannt) |
| COPY | Kopiert eine Ressource, die Dateinamen werden dabei in Form einer URI angegeben |
| MOVE | Verschiebt eine Ressource (mit der gleichen Syntax wie COPY) |
| DELETE | Löscht eine Ressource (mit der gleichen Syntax wie COPY) |
| LOCK | Weist den Webserver an, die Ressource zu sperren. Damit soll verhindert werden, dass die Ressource auf dem Server anderweitig bearbeitet wird, während der anfragende Client das tut. |
| UNLOCK | Entfernt die Sperre wieder |
Ressource ist in diesem Sinn ein HTTP-spezifischer Begriff, der in etwa als „das Ding, auf das ein URI zeigt“ definiert werden kann. Dabei handelt es sich in der Regel um Dateien auf dem Webserver.

## WebDAV und Reverse Proxy

WebDAV lässt sich auch hinter einem Reverse Proxy betreiben. Wenn man die Benutzerverwaltung von WebDAV verwendet, muss man dem Proxy mitteilen, die Authentifizierung auf dem Webserver abzuhandeln. Zum Beispiel bei Squid:

## Implementierungen

WebDAV ist in allen gängigen Webservern und in vielen Dateimanagern implementiert. Microsoft unterstützt es rudimentär seit Windows XP wie ein herkömmliches Dateisystem, Apple seit macOS und jede größere Linux-Distribution.
Im Lieferumfang des Apache HTTP Server befindet sich das DAV-Modul mod_dav. Es kann mit dem Catacomb WebDAV Server erweitert werden.
Zudem wird es auf Android, iOS und einigen anderen Smartphone-Betriebssystemen per App unterstützt.
Owncloud, Nextcloud und EGroupware sind PHP-basierte Cloud-Speicherdienste und bieten vollständige WebDAV-Unterstützung.