Modèle de sécurité Mozilla des services Web
Un article de MDC.
Sommaire |
[modifier] Présentation
(This document is being compiled from scattered documentation and source code and most of the information in it has not been verified. Please do not depend on anything in it being correct for security.)
Afin d'empêcher le navigateur d'être utilisé comme un outil permettant aux sites Web d'obtenir des privilèges qui doivent rester du domaine de l'utilisateur (tels qu'être derrière un pare-feu ou tirer avantage des cookies utilisateur), Les navigateurs Web restreignent les droits de pages Web lorsqu'elles accèdent à des ressources d'autres domaines. Ces restrictions s'appliquent également aux services Web.
Cependant, les services Web peuvent être destinés à être accessible depuis d'autres domaines, voire depuis n'importe quel domaine. Mozilla permet aux sites d'hébergement des services Web de lui indiquer quels services Web sont accessibles depuis d'autres sites. Ils y parviennent en créant un fichier nommé web-scripts-access.xml à la racine du serveur qui accorde les permissions d'accès aux services Web par les domaines extérieurs. Par exemple, pour déterminer quels sites Web peuvent accéder à un service situé à l'adresse http://www.example.com/dir1/dir2/service, Mozilla chargera le fichier http://www.example.com/web-scripts-access.xml, qui pourra choisir de déléguer la décision au fichier http://www.example.com/dir1/dir2/web-scripts-access.xml.
[modifier] Format du fichier web-scripts-access.xml
Le fichier web-scripts-access.xml est un document XML. Toutes erreurs dans la syntaxe XML, aussi bien que tout échec to follow the format, fera que le document sera ignoré.
[modifier] L'élément webScriptAccess
Son élément racine doit être une élément webScriptAccess de l'espace de nommage http://www.mozilla.org/2002/soap/security. Cet élément doit avoir au moins un élément descendant delegate ou n'importe quelle quantité (0 ou plus) d'élément descendant allow. Tous ces éléments descendants doivent être dans le même espace de nommage que le parent, et doivent être vide.
[modifier] L'élément delegate
La présence d'un élément delegate signifie que le navigateur pourra déléguer les contrôles d'accès à un fichier web-scripts-access.xml situé dans le répertoire du service Web. Par exemple, lors de l'accès à un service Web situé à l'adresse http://www.example.com/dir1/dir2/service, si le fichier d'accès situé à l'adresses http://www.example.com/web-scripts-access.xml contient un élément delegate, Mozilla utilisera plutôt http://www.example.com/dir1/dir2/web-script-access.xml pour déterminer si l'accès est autorisé ou non. Si un tel fichier n'existe pas, alors l'accès sera interdit.
[modifier] L'élément allow
Si aucun élément delegate n'est présent ou si e service Web est dans le même répertoire que le fichier web-script-access.xml, alors les éléments allow seront traités. Si le fichier existe mais qu'il ne contient pas d'élément allow, alors tous les accès seront autorisés. Si des éléments allow existent, alors l'accès sera permis si au moins l'un d'entre eux l'autorise.
[modifier] L'attribut type
L'attribut type de l'élément allow peut prendre les valeurs suivantes :
- any
- Signifie que l'élément
allows'applique à tous les services qui utilisent le fichierweb-scripts-access.xmlpour les vérifications de sécurité. Il pourra y avoir bien plus de services Web dans l'avenir qu'il n'en existe à l'heure actuelle. Ceci est équivalent à l'absence d'attributtype. - load (Non implémenté)
- Capacité à charger des documents via XMLHttpRequest ou tout autre mécanisme similaire.
- soap
- Requêtes SOAP sans vérification des en-têtes
- soapv
- Requêtes SOAP avec vérification des en-têtes
[modifier] L'attribut from
L'attribut from de l'élément allow indique les sites appelants auxquels s'applique l'élément allow. Si aucun attribut from n'existe alors l'élément allow s'applique à tous les sites. Autrement, l'attribut from donne une URL à valider, qui peut contenir jusqu'à deux astérisques (*) qui correspondent à n'importe quel caractère. La validation se fait par rapport à une URL pour laquelle le répertoire et le fichier ont été supprimés, ainsi valider une page spécifique fera échouer la validation dans son ensemble.
[modifier] Exemples de fichier web-scripts-access.xml
Ces exemples n'ont pas été testés ! Ils devraient l'être afin de s'assurer qu'ils font bien se qu'ils sont supposé faire.
[modifier] Autoriser l'accès depuis n'importe quelle page Web à tous les services Web d'un site
Notez que ceci est une chose sensible à ne faire que le site ne sert pas de contenu basé sur les cookies, l'authentification HTTP, l'adresse IP/Domaine d'origine, ou tout autre méthode d'authentification.
<webScriptAccess xmlns="http://www.mozilla.org/2002/soap/security"/></pre>
[modifier] Autoriser l'accès aux services SOAP depuis un répertoire de services Web
Pour autoriser l'accès aux services uniquement depuis un répertoire donné (par exemple, le répertoire où se trouve des services sécurisés, publiques et ne nécessitant pas d'authentification), vous avez besoin d'un fichier web-scripts-access.xml dans le répertoire racine du serveur et un autre dans le répertoire contenant les services. Dans le répertoire racine du serveur :
<webScriptAccess xmlns="http://www.mozilla.org/2002/soap/security"> <delegate/> <allow type="none"/> </webScriptAccess>
Et dans le répertoire des services :
<webScriptAccess xmlns="http://www.mozilla.org/2002/soap/security"> <allow type="soapv"/> <allow type="soap"/> </webScriptAccess>
[modifier] Références
- Nouveau modèle de sécurité des services Web, la proposition originale pour le format du fichier
web-scripts-access.xml - Feuille de route des services Web, documentée lorsque les fonctionnalités liées aux services Web, incluant le modèle de sécurité, ont été supportées pour la première fois
[modifier] Autres ressources
- Documentation de crossdomain.xml, un format de fichier similaire utilisé par Macromedia Flash Player