RFC 4918 Punti tecnici delle appendici
Questo documento riassume il contenuto chiave delle appendici A-F di RFC 4918.
Appendice A. Processing XML Elements (Considerazioni sul trattamento degli elementi XML)
Punti chiave
1. Requisiti di analisi XML:
- Deve utilizzare un parser XML conforme agli standard W3C
- Deve supportare gli spazi dei nomi XML
- Deve elaborare XML ben formato
2. Trattamento di elementi sconosciuti:
- Client e server devono ignorare gli elementi XML non riconosciuti
- Questo garantisce la compatibilità in avanti
- Le estensioni non rompono le implementazioni esistenti
3. Trattamento degli spazi bianchi:
- Gli spazi bianchi nei valori degli attributi sono significativi
- Gli spazi bianchi nei valori degli attributi devono essere preservati
- Ignorare l'attributo xml:space
4. Considerazioni sulla sicurezza:
- Disabilitare le entità esterne per prevenire attacchi XXE
- Limitare la dimensione del documento XML
- Limitare la profondità di analisi
Appendice B. HTTP Client Compatibility (Considerazioni sulla compatibilità dei client HTTP)
Linee guida di compatibilità
1. Client HTTP/1.1:
- I client HTTP/1.1 di base possono accedere alle risorse WebDAV
- Ma non possono utilizzare funzionalità specifiche di WebDAV (blocco, proprietà, ecc.)
- Utilizzare metodi HTTP standard (GET, PUT, DELETE)
2. Supporto parziale di WebDAV:
- I client possono implementare un sottoinsieme di WebDAV
- Dovrebbero scoprire le capacità del server tramite OPTIONS
- Degradazione graziosa alle funzionalità HTTP/1.1
3. Interoperabilità:
- Seguire le specifiche HTTP
- Gestire correttamente i reindirizzamenti
- Supportare connessioni persistenti
Appendice C. The 'opaquelocktoken' Scheme (Schema e URI opaquelocktoken)
Schema URI opaquelocktoken
Definizione: Schema URI progettato specificamente per i token di blocco WebDAV
Sintassi:
opaquelocktoken:<UUID>
Esempio:
opaquelocktoken:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
Caratteristiche:
- Globalmente univoco: Utilizza UUID per garantire l'unicità
- Opaco: I client non dovrebbero analizzare la sua struttura interna
- Sicuro per URL: Può essere utilizzato nelle intestazioni HTTP e XML
Scenari di utilizzo:
- Token di blocco restituito dal metodo LOCK
- Token di blocco inviato nell'intestazione If
- Token di blocco specificato nell'intestazione Lock-Token
Differenza con altri URI:
- Non dereferenziabile (nessuna risorsa corrispondente)
- Utilizzato solo per identificare i blocchi
- Ciclo di vita identico al blocco
Appendice D. Lock-null Resources (Risorse bloccate nulle)
Concetto di risorsa bloccata nulla (LNR)
Definizione: Tipo di risorsa speciale definito in RFC 2518, creato eseguendo LOCK su un URL non mappato.
Modifiche in RFC 4918:
- RFC 4918 raccomanda l'uso di "risorse vuote bloccate" invece di LNR
- Ma per compatibilità all'indietro, i server possono continuare a supportare LNR
Risorse vuote bloccate vs LNR
| Caratteristica | Risorsa vuota bloccata (raccomandato) | Lock-Null Resource (compatibilità) |
|---|---|---|
| Metodo di creazione | LOCK su URL non mappato | LOCK su URL non mappato |
| Comportamento GET | Restituisce 200 e contenuto vuoto | Restituisce 404 |
| Proprietà | Proprietà di risorsa normali | Proprietà LNR speciali |
| Visibilità | Visibile come membro della collezione | Potrebbe essere invisibile |
| MKCOL | Fallisce (405) | Convertito in collezione |
Raccomandazioni di compatibilità client:
- Dopo aver eseguito LOCK su un URL non mappato, utilizzare PUT per aggiungere contenuto
- Non dipendere dal comportamento specifico di GET o MKCOL
- Non dipendere dalle proprietà specifiche di LNR
Appendice E. Guidance for Clients Desiring to Authenticate (Guida per i client che desiderano autenticarsi)
Scoperta dell'autenticazione
Problema: Come fa un client a scoprire che una risorsa richiede l'autenticazione?
Metodo 1 - Richiesta OPTIONS proattiva:
OPTIONS /resource HTTP/1.1
Host: example.com
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="WebDAV"
Metodo 2 - Tentare l'operazione e gestire 401:
PROPFIND /resource HTTP/1.1
Host: example.com
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest realm="WebDAV"
Migliori pratiche per l'autenticazione
1. Supportare più schemi di autenticazione:
- Autenticazione Basic (richiede HTTPS)
- Autenticazione Digest
- Token Bearer OAuth 2.0
- Certificati client
2. Memorizzare nella cache le credenziali di autenticazione:
- Memorizzare nella cache le credenziali per lo stesso realm
- Implementare timeout appropriati
- Archiviare in modo sicuro le informazioni sensibili
3. Gestire i fallimenti di autenticazione:
- Fornire messaggi di errore chiari
- Consentire la riautenticazione
- Evitare il blocco degli account utente
4. Considerazioni sulla sicurezza:
- Utilizzare sempre HTTPS per trasmettere le credenziali
- Non includere password nell'URL
- Implementare la limitazione della frequenza per prevenire attacchi brute force
Appendice F. Summary of Changes from RFC 2518 (Riepilogo delle modifiche rispetto a RFC 2518)
RFC 4918 rende obsoleto RFC 2518, le principali modifiche includono:
F.1 Modifiche alle implementazioni client e server
1. Rimozione delle risorse bloccate nulle (LNR):
- Raccomanda l'uso di "risorse vuote bloccate"
- Semplifica l'implementazione
- Migliora l'interoperabilità
2. Chiarimento della sintassi dell'intestazione If:
- Regole di corrispondenza più chiare
- Esempi migliorati
- Elimina le ambiguità
3. Comportamento delle collezioni:
- Chiarisce il comportamento di DELETE sulle collezioni
- Chiarisce l'uso dell'intestazione Depth
- Migliora la gestione degli errori
4. Trattamento delle proprietà:
- Chiarisce le proprietà live vs morte
- Migliora i requisiti di atomicità di PROPPATCH
- Chiarisce il trattamento XML dei valori delle proprietà
F.2 Modifiche alle implementazioni server
1. Risposta 207 Multi-Status:
- Requisiti di formato più rigorosi
- Segnalazione degli errori migliorata
- Elemento href obbligatorio
2. Comportamento di blocco:
- Chiarisce il meccanismo di aggiornamento del blocco
- Migliora la gestione dei timeout
- Chiarisce i requisiti di invio del token di blocco
3. Semantica COPY/MOVE:
- Chiarisce il comportamento dell'intestazione Overwrite
- Migliora il trattamento delle risorse di destinazione
- Chiarisce l'impatto dei blocchi
F.3 Altre modifiche
1. Miglioramenti della sicurezza:
- Aggiunge linee guida di sicurezza XML
- Migliora le raccomandazioni di protezione DoS
- Chiarisce i requisiti di autenticazione
2. Miglioramenti dell'interoperabilità:
- Specifiche più chiare
- Più esempi
- Elimina le ambiguità di implementazione
3. Funzionalità deprecate:
- Alcune funzionalità opzionali di RFC 2518
- Semplifica i requisiti di conformità
- Riduce il carico di implementazione
Riepilogo delle appendici
Le appendici forniscono le seguenti informazioni chiave:
- Linee guida di implementazione (A, B): Trattamento XML e compatibilità HTTP
- Dettagli tecnici (C, D): Schema URI del token di blocco e risorse bloccate nulle
- Raccomandazioni pratiche (E): Linee guida per l'implementazione dell'autenticazione
- Storia dell'evoluzione (F): Modifiche da RFC 2518 a RFC 4918
Queste appendici sono molto preziose per implementare client e server WebDAV di alta qualità.