mozilla
Vos résultats de recherche

    Télécharger du JSON et du JavaScript dans une extension

    Une pratique courante utilisée par de nombreuses extensions est d'utiliser XMLHttpRequest ou un mécanisme similaire pour charger du code JavaScript ou des données au format JSON depuis un site distant. Le contenu récupéré est ensuite interprété avec la fonction eval(). Cette pratique est dangereuse, et une extension qui l'utiliserait ne pourrait pas franchir l'étape de la revue de code pour être hébergée sur le site AMO

    Cette pratique est dangereuse car le code ainsi interprété obtient les mêmes droits que l'extension, c'est à dire qu'il a un accès complet au chrome, donc à la machine de l'utilisateur, sur laquelle il peut faire ce qu'il veut. L'extension n'a aucun moyen de s'assurer que le site à partir duquel elle récupère du code ou des données n'a pas été piraté, et que le code récupéré est sans danger. AMO prend ce risque très au sérieux.

    Il existe heureusement un moyen de contourner ce problème.

    Télécharger du JSON

    Pour interpréter des données formatées en JSON, les développeurs ne devraient pas utiliser eval() mais plutôt une des méthodes indiquées sur cette page. Ces méthodes protègent contre du code malicieux, par exemple en garantissant que l'object JSON ne contient que des propriétés, et qu'aucune de ses éventuelles fonctions ne sera exécutée. Pour décoder du JSON, utilisez une fonction faite pour ça, pas eval() !

    Télécharger du JavaScript

    Il arrive que du code JavaScript soit téléchargé d'un serveur distant et exécuté dans l'extension. Par exemple si le développeur veut que son extension soit toujours à jour, et ne pas faire appel au mécanisme de mise à jour à chaque modification de code. Dans ce cas, le code téléchargé devrait être exécuté dans un bac à sable pour protéger l'extension et la machine sur laquelle elle s'exécute.

    Pour exécuter ce code dans un environnement protégé, il faut faire appel au composant Components.utils.evalInSandbox(). Le code JavaScript est exécuté dans un bac à sable avec tous les objets "sûrs" avec lesquels il doit communiquer. Cette méthode n'est cependant pas sans danger, et les développeurs devraient lire attentivement la documentation pour s'assurer que le code non sûr ne risque pas de sortir de ce contexte protégé

    Étiquettes et contributeurs liés au document

    Étiquettes : 
    Contributors to this page: Clochix, wakka27, fscholz, teoli
    Dernière mise à jour par : teoli,