Pour des raisons évidentes de sécurité, il n'est pas possible de faire un certain nombre de choses en javascript dans les ApplisWeb, notament utiliser les composants XpCom installés dans Mozilla.
Si l'on souhaite impérativement utiliser ces composants, il va falloir activer les privilèges.
La meilleure solution reste de signer l'application.
Il existe cependant un autre moyen, mais moins sympa et plus dangereux pour l'internaute. Le voici.
Il vous faut modifier la propriété de configuration signed.applets.codebase_principal_support. Cela nécessite donc l'intervention de l'internaute pour effectuer cette modification.
Pour les versions récentes de Firefox, vous pouvez la modifier en tapant dans le navigateur l'url about:config, puis en double-cliquant sur signed.applets.codebase_principal_support. Mettez la valeur true.
Une autre méthode est de modifier à la main le fichier pref.js situé le profil de l'utilisateur. Cherchez la ligne :
user_pref("signed.applets.codebase_principal_support", false);
et remplacez la par :
user_pref("signed.applets.codebase_principal_support", true);
Attention, il ne faut pas que Mozilla soit en cours d'exécution lors de cette opération.
Les scripts pourront donc accéder à certains privilèges quand ils le demandent. Ces demandes requieront toutefois l'autorisation de l'utilisateur. Cela ne peut être fait de façon transparente. Concrètement :
Exemple (pris sur mdc)
function getHomePage() {
try {
// demande la permission pour UniversalPreferencesRead
netscape.security.PrivilegeManager.enablePrivilege('UniversalPreferencesRead');
var hp = navigator.preference('browser.startup.homepage');
alert('Votre page d\'accueil est ' + hp);
} catch (e) {
// l'utilisateur refuse la permission
alert('La permission de lire la page de démarrage a été refusée.');
}
}
Si la préférence signed.applets.codebase_principal_support est à false, rien ne sera demandé à l'utilisateur et une exception sera générée au niveau du code qui tente d'accéder à des privilèges.
Voici les différents types de permissions que vous pouvez demander
Privilèges | Signification |
!UniversalBrowserRead | permet d'utiliser l'Api d'accés aux données "sensibles" |
!UniversalBrowserWrite | permet d'utiliser l'api de modification des données "sensibles" |
UniversalXPConnect | Permet d'utiliser tous les objets XPcom |
!UniversalPreferencesRead | permet de lire les préférences via navigator.preference |
!UniversalPreferencesWrite | permet de modifier les préférences via navigator.preference |
!CapabilityPreferencesAccess | permet d'accéder aux préférences qui définissent la politique de sécurité (il faut aussi demander !UniversalPreferencesRead/Write) |
!UniversalFileRead | permet d'ouvrir des fichiers locaux dans une fenêtre, effectuer de l'upload à partir du disque de l'utilisateur en utilisant la balise <input type="file">. |
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.