Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

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 : 
 Contributeurs à cette page : teoli, wakka27, fscholz, Clochix
 Dernière mise à jour par : teoli,