Webdav
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.
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
Protože je WebDAV pouhé rozšíření HTTP protokolu, je většinou implementován jako doplněk webového serveru.
- WsgiDAV
- Jednoduchý WebDAV server implementovaný přes webový server WSGI, napsaný v pythonu - což jsou objekty které umožňují integrovat webové služby do aplikací psaných v tomto skriptovacím jazyce. Stejné objekty využívají jako základ pro komunikaci s klienty i jiné specializované servery, jako je např. Radicale - server pro správu kalendářů, který používá CalDAV a CardDAV rozšíření HTTP protokolu. Tento WebDAV server ale není součástí repozitářů Debianu
- Apache
- Je nejrozšířenější webový server. Aby bylo možné k adresáři publikovanému přes web přistupovat přes WebDAV musí být zaveden modul mod_dav a DAV přístup explicitně pro něj povolen.
- lighttpd
- Je webový server, který je navržen pro vysoký výkon. Rozšíření pro WebDAV se u něj aktivuje zavedením modulu webdav, který je u Debianu v instalačním balíčku
lighttpd-mod-webdav
- Nginx
- Je webový server, který byl podobně jako lighttpd navržen tak, aby zvládal vysoké počty klientů. Mimo jiné může fungovat také jako reverzní HTTP proxy, nebo proxy server pro IMAP/POP3 pro různé domény. Podpora pro WebDAV se u něj aktivuje při kompilaci parametrem
--with-http_dav_module
, proto je u Debianu nutné nainstalovat verzi serveru, která ji má zakompilovanou a to buďnginx-full
nebonginx-extra
.
Autentizační mechanismus
WebDAV je je protokol, který sám o sobě žádný autentizační mechanismus neřeší. Proto by nemohl do adresáře strkat své soobory každý náhodný kolemjdoucí, musí být přístup podmíněný nějakým autentizačním mechanismem.
Za předpokladu, že se provádí přesměrování do cílového adresáře podle uživatele je ověření uživatele doḱonce nezbytně nutné.
basic
http://en.wikipedia.org/wiki/Basic_access_authentication
Autentizační mechanismus basic je v podstatě jednoduché ověření přístupu pomocí kombinace jména a hesla. Při každém přístupu do chráněného adresáře vyzve webový server server klienta, aby poslal v rámci požadavku na stránku také autentizační informace - jméno a heslo. Ten je zakóduje metodou Base64 a odešle v rámci HTTP požadavku.
Nevýhodou tohoto autentizačního mechanismu je, že uživatelské jméno a heslo putuje sítí v otevřeném formátu a pokud není spojení mezi serverem a klientem šifrované přes SSL, může snadno dojít ke kompromitaci.
O tom, jak snadno lze tyto údaje získat se lze přesvědčit dekódováním řetězce odesílaného v HTTP hlavičce na server pomocí openssl
echo "QWxhZGRpbjpvcGVuIHNlc2FtZQ==" | openssl enc -base64 -d
otevřený protokol jako FTP, umí-li však systém na klientském zařízení svou komunikace s webovým serverem šifrovat přes 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.
digest
ldap
Konfigurace webového serveru Apache pro multiuživatelský WebDAV přístup
Použití atentizace typu basic
Musí být zaveden modul auth_basic
<Location /webdav>
AuthType Basic
AuthName "WebDAV"
AuthBasicProvider file
AuthUserFile /etc/dav/htpasswd.file
Require valid-user
</Location>
|
Pro vytvoření souboru pro uložení hesla lze použít utilitu htpasswd, která je u Debianu součástí instalačního balíčku apache2-utils
. Kde a s jakým jménem bude soubor uložen, je vcelku jedno.
root@stroj~# htpasswd -c -m /etc/dav/htpasswd.file user1
root@stroj~# htpasswd -m /etc/dav/htpasswd.file user2
...
|
Použití atentizace typu digest
Musí být zaveden modul auth_digest
<Location /webdav>
AuthType Digest
AuthName "WebDAV"
AuthDigestDomain webdav
AuthDigestProvider file
AuthUserFile /etc/dav/htdigest.file
Require valid-user
</Location>
|
Pro vytvoření souboru s hashovanou kombinací hesla a domény lze použít utilitu htdigest, která je stejně jako utilita htpassword u Debianu součástí instalačního balíčku apache2-utils
. Kde a s jakým jménem bude soubor uložen, je vcelku jedno. Musí být splněna pouze ta podmínka, že použitý realm
v souboru odpovídá hodnotě parametru AuthName
a hodnota parametru AuthDigestDomain
je shodná s hodnotou elementu Location
root@stroj~# htdigest -c -m /etc/dav/htdigest.file WebDAV user1
root@stroj~# htdigest /etc/dav/htdigest.file WebDAV user2
...
|
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
Připojení na WebDAV server, které bývalo u MS Windows 2000 relativně jednoduchou operací, je verze od verze nástupnických MS Windows jeden velký opruz. Microsoft u svého klienta iplementoval u WebDAVu bezpečnější typ autentizace digest poněkud nestandardním způsobem - kontrolovaný kontrolní součet totiž zahrnuje i doménové jméno klienta. Takže v praxi je nepoužitelná, neboť správce by musel při zavádění uživatele znát všechna doménová jména strojů ze kterých by na server přistupoval a na to aby měl po ruce křišťálovou kouli.
Naštěstí se jí bylo možné u MS Windows XP vyhnout změnou hodnoty klíče UseBasicAuth
z 0 na 1, kterým se změnilo nastavení výchozího autentizačního mechanizmu na basic.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters] "UseBasicAuth"=dword:00000001
Soubor:WebDav workaround XP.reg
Připojení bylo možné realizovat dvěma způsoby.
http://hostitel/sdílený_adresář
nebo
\\hostitel\sdílený_adresář
Windows XP totiž obsahovaly dva WebDAV klienty - "mini-redirector" a "webfolders client", a každý z nich fungoval trochu jinak.
U dalších verzí se v Microsoftu sice poučili a pro MS Windows Vista a výš nastavili výchozí hodnotu klíče BasicAuthLevel
na 1, jenže pouze pro komunikaci zabezpečenou přes SSL. A pro nešifrovanou komunikaci klient stále trval na autentizaci typu digest. Aby bylo možné používat autentizační mechanismus basic i u HTTP protokolu je opět nutné hrábnout do registru a změnit hodnotu klíče BasicAuthLevel
na 2.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters] "BasicAuthLevel"=dword:00000002
Soubor:WebDav workaround Vista.reg
- 0
- Autentizace typu basic je vypnuta. Lze použít pouze autentizaci typu digest
- 1
- Autentizace typu basic se použije pouze v případě, že je komunikace WebDAV serverem šifrovaná (přes HTTPS)
- 2 nebo vyšší
- Autentizace typu basic se použije jak v případě šifrované komunikace (HTTPS), tak nešifované (HTTP)
Navíc, v systému zůstal k dispozici již pouze jeden WebDAV klient - mini-redirector takže u Windows Vista bylo nutné připojit sdílený adresář pouze s následující syntaxí:
\\hostitel\sdílený_adresář
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ář |
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
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