Webdav

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

WebDAV (z angl. Web-based Distributed Authoring and Versioning) je rozšíření HTTP protokolu verze 1.1 o metody COPY, LOCK, MKCOL, MOVE, PROPPATCH a UNLOCK, které umožňuje pracovat se soubory na WWW serveru.

Výhodou tohoto protokolu je, že využívá stejný HTTP protokol, jako webové služby a porty 80 (HTTP) a 443 (HTTPS) jsou - na rozdíl od portů, přes které fungují jiné komunikační protokoly - obvykle průchozí, aby se uživatelé mohli z vnitřní sítě dostat k webovým stránkám. Proto umoňuje přenášení souborů na server i přes relativně striktně nastavený firewall nebo proxy.

Idea řešení, které by umožnilo upravovat webové stránky uživatelem on-line rovnou na serveru byla přítomna od samého počátku vzniku webových služeb, jenže k funkční implementaci byla dlouhá cesta. První verze HTTP protokolu s číslem 0.9 byla zveřejněna r. 1991, ale první konkrétní návrhy k tomu jaké metody do něj implementovat aby to bylo možné učinil Jim Whitehead až r. 1996. Do té doby se upravené soubory uploadovaly na server prostřednictvím FTP protokolu.

FTP protokol, určený k přenášení souborů po síti, je starší než HTTP protokol. Jeho návrh pochází již z r. 1986 - z doby, kdy ještě nikoho nenapadlo uvažovat o potencionálních možnostech zneužití. Veškerá data se jím přenášela v čitelné podobě - včetně přihlašovacích údajů, takže případnému škůdci stačilo kdekoliv po trase odchytit dostatečné množství paketů a pak v nich tyto údaje vyhledat.

V těch dřevních dobách webu kdy byl editor webových stránek součástí některých prohlížečů se k přenosu souborů z klienta na server zpočátku využíval pouze integrovaný FTP klient. Protože v r. 1997 ještě neexistovala pro WebDAV žádná funkční implementace, byla specifikace FTP protokolu rozšířena o přidané bezpečnostní prvky. Teprve zhruba od r. 2003 začaly některé webové servery nabízet jako alternativu pro upload souborů také WebDAV. Ovšem v té době už byl integrovaný wysiwyg editor pouze v Mozille - poslední verze, která jej ještě obsahovala (1.7.13) byla vydaná na jaře 2008.

WebDAV měl význam především pro wysiwyg editory HTML stránek, jako byla Amaya, Frontpage nebo editor v Mozille, ovšem ty se hodily pouze pro správu statického webu. Internetový boom v závěru 20. století ale vynesl do popředí weby s dynamicky generovaným obsahem, kde finální podoba webové stránky závisela na interpretaci kódu stránky na straně serveru v kombinaci s renderovacími schopnostmi jádra webového prohlížeče. Přístup k souborům s využitím WebDAVu byl, především kvůli potenciálnímu riziku při zneužití - zbytečný. A většina programátorů webový aplikací byla zvyklá používat FTP klienta, takže o to ani nebyl příliš zájem.

WebDAV se stal zajímavou alternativou až s nástupem chytrých mobilních zařízení s trvalým přístupem s internetové síti. A to pro svůj potenciál využitelný ke sdílení uživatelských dat mezi pracovní stanicí a mobilním telefonem.


Popis metod

PROPFIND
vytáhni vlastnosti souboru
PROPATCH
změň resp. zruš nějakou vlastnost souboru při atomické operaci
MKCOL
vygeneruj obsah adresáře
COPY
zkopíruj soubor z jedné adresy na druhou
MOVE
přenes soubor z jedné adresy na druhou
LOCK
zamkni soubor
UNLOCK
odstraň zámek

Server

HTTP protokol s rozšířením pro WebDAV je ve své podstatě podobně otevřený protokol jako FTP, umí-li však systém na klientském zařízení svou komunikace se serverem šifrovat pomocí SSL, lze považovat tento přenos dat za dostatečně bezpečný. A protože SSL šifrování dnes zvládají prakticky všechny používané platformy - včetně těch mobilních - začalo se WebDAVU využívat pro sdílení souborů s osobními daty, jako jsou sdílené kalendáře, adresáře, poznámky aj.

Existuje celá řada specializovaných WebDAV serverů, které se neřeší pouze soubory jako takové, ale i jejich interpretaci a administraci.

WsgiDAV

WsgiDAV je WebDAV server, napsaný v pythonu, který využívá na WSGI - což jsou objekty které umožňují integrovat webové služby ve skriptech. Tento server lze používat samostatně ale využívají ho jako základ pro komunikaci s klienty i jiné specializované servery

Apache

Apache je především využívaný jako webový server, který však ale umožňuje se zavedeným modulem mod_dav používat také WebDAV přístup.

Specializované DAV servery

  • radicale

Klienti

Klienti pro MS Windows

Připojení na WebDAV server je možné rovnou z MS systémů, ale bohužel je to jedna velká tragédie, protože každá verze potřebuje přiohnout trochu jiným způsobem záznam v registru. Proto se také na MS Windows WebDAV moc nepoužívá.

Alternativní připojení na WebDAV server nabízejí různé alternativní aplikace třetích stran - vesměs placené. Existuje však akceptovatelná alternativa, poměrně slušně fungující, kterou je plugin do poměrně rozšířeného souborového manažeru Total Commander


Problémy s připojením na WebDAV u MS Windows

Relativně nejméně problematické bylo připojení na WebDAV server u MS Windows 2000. V té době se však používala autentifikace typu basic

MS Windows XP již vyžadují úpravu klíče v registru, v závislosti na tom, jaký typ autentifikace server používá.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters]
"UseBasicAuth"=dword:00000001

Soubor:WebDav workaround XP.reg

http://hostitel/sdílený_adresář

nebo

\\hostitel\sdílený_adresář
Upozornění Neautorizovaný WebDAV je u Windows XP bezproblémový, ovšem při pokusu o autorizaci vás čeká zrada! Při autorizovaném připojení totiž jejich klient nepracuje korektně s přihlášení a posílá uživatelské jméno (login) včetně doménového jména. Jedním z možných řešení je zavést do autorizace také uživatelská jména včetně domény hostitele. Viz níže
hostitel\\login

Při zadávání přes příkazovou řádku nezapomeňte, že je třeba zabránit shellu aby zpětná lomítka interpretoval, tedy...

 user@stroj:~$ htpasswd -c /cesta_k/autorizačnímu_souboru "hostitel\\\\login"

MS Windows Vista a vyšší na rozdíl od MS Windows XP[1] používají pro připojení jako výchozí autentifikaci typu digest. Bohužel ovšem poněkud svérázným způsobem implementovanou.

Aby bylo možné použít autetifikační mechanismus basic je opět nutné hrábnout do registru

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters]
"BasicAuthLevel"=dword:00000002

Soubor:WebDav workaround Vista.reg

S tím pravděpodobně souvisí, že u Windows Vista lze připojit sdílený adresář pouze s následující syntaxí:

\\hostitel\sdílený_adresář
Upozornění V případě že se pokusíte připojit sdílený adresář ve Windows Vista stejným způsobem jako v XP, se vám může stát, že to shodí hlavní proces exploreru a ten sebou vezme sebou celý OS!

Může to mít souvislost s činností antivirové ochrany. Nám se takto hroutil stroj s antivirovým programem NOD32, který se nejspíš pokoušel o analýzu HTTP protokolu přes který WebDAV běží.

Poznámka U Windows Vista, je-li WebDAV autorizován přes SSL pak je třeba do cesty doplnit že má jít přes SSL
\\hostitel@SSL\sdílený_adresář
  1. Jak píše Petr Tomášek ve svém blogu http://www.abclinuxu.cz/blog/vejsplechty/2007/5/webdav-a-windows-vista , Windows XP obsahovaly dva WebDAV klienty - "mini-redirector" a "webfolders client", zatímco Windows Vista má již pouze ten první ("mini-redirector").

Linux

Připojení WebDAV pod linuxem je záležitostí naprosto triviální, pokud máte v jádře zaveden modul fuse (což je dnes většinou naprosto běžná věc) a nainstalovány utility pro davfs (v Debianu aktuálně instalační balík davfs2). Pro připojení pak stačí sdílený adreář namountovat příkazem:

root@stroj:~# mount -t davfs http://hostitel/sdílený_adresář bod_připojení

resp.

user@stroj:~$ sudo mount -t davfs http://hostitel/sdílený_adresář bod_připojení

V případě že je WebDAV autorizovaný se vás systém během procesu připojení zeptá na uživatelské jméno a heslo.

Pokud chcete aby se adresář připojoval ihned po startu, nebo aby jej bylo možné připojovat pod běžným uživatelem, je třeba nastavit mountování v souboru /etc/fstab, viz příklad:

http://hostitel/sdílený_adresář bod_připojení davfs user,no_netdev,use_proxy 0 0
Poznámka Adresář sdílený přes WebDAV neumožňuje pracovat s linky a to jak "tvrdými" tak se symlinky

Klienti pro linux

Klientskou aplikací pro linuxovou příkazovou řádku je např. cadaver ( http://www.webdav.org/cadaver/ ). Hodí se zvláště v případě, kdy uživatel nemá práva k použití příkazu mount.

Mac OS X

Android

BlackBerry

Připojení na jiných OS

http://www.cer.jhu.edu/index.cfm?pageID=326
Postup připojení adresáře sdíleného přes WebDAV pod Mac OS X
http://ajaxian.com/archives/javascript-webdav-client
Javascriptový klient pro použití přes AJAX, v některých prohlížečích však nemusí fungovat. Implementací tohoto klienta je Ajaxfilebrowser http://www.webdavsystem.com/ajaxfilebrowser Na jeho stránkách je k dispozici i online demo.

Externí linky

http://en.wikipedia.org/wiki/WebDAV - Wikipedia

http://interval.cz/clanky/zaklinadlo-jmenem-webdav/ - série článků na interval.cz