35 votes

Capacités pour Lua: quelle expérience y a-t-il?

Il y a eu quelques discussions sur l' cap-talk liste de diffusion autour de Lua et de la prise en charge de Javascript, l'objet-modèle de la capacité, avec la conclusion qu'en raison du soutien de la restriction de l'environnement à des fonctions dites par setfenv, et la possibilité d'inoubliables des références à des objets immuables, l'OCM pourraient être mises en œuvre.

Nous avons vu comment cela fonctionne? Je suis intéressé par la suppression des exploits d'une application existante avec de très utile, généreux prise en charge des scripts en Lua qui, malheureusement, permet un accès shell dans toutes sortes de cas. Certains accès shell est nécessaire: l'objet-modèle de la capacité semble être une bonne façon de gérer les choses. Mais je m'inquiète de comment convaincre un cas que je peut faire que cette approche sera effectivement vérifiable, la sécurité dans le sure-pour-être salissant pratique.

Quelques liens:

  1. Ancienne question: Comment puis-je créer une sécurité Lua sandbox?
  2. Arrière-plan à erights.org: à Partir d'Objets De Capacités
  3. Lua wiki: les bacs à sable et ReadOnlyTables - montre setfenv dans l'action, montre idée de base derrière les tables qui peuvent, sous certaines conditions, être rendu accessible en lecture seulement

3voto

Shakakai Points 2141

Je ne peux pas parler pour Lua, mais pour Javascript, Caja a de l'outillage à la création d'un bac à sable, limitant l'accès uniquement à certaines fonctions. Il a été créé à l'origine pour construire un bac à sable pour le HTML/JS widgets (comme ceux utilisés sur iGoogle).

http://code.google.com/p/google-caja/

Voici une description du projet à partir de leur page d'accueil:

Caja (prononcez KA-ha"), est un Mot espagnol qui signifie fort, banque, caisse enregistreuse, voûte; un récipient pour les objets de valeur. Un développeur web utilise les outils traditionnels comme le HTML, JavaScript, et CSS; et Caja fournit un compilateur (un "cajoler") qui prend l'application web et produit un "convaincu" HTML application web. L' cajoler tente de vérifier la sécurité propriétés en faisant l'analyse statique, et où il ne peut pas il réécrit l' entrée pour ajouter d'exécution des contrôles.

Depuis les applications web font usage commun de navigateur Api, par exemple, l'Api DOM, que donner une énorme quantité de contrôle sur la page web, Caja fournit apprivoisé Les api qui virtualiser des parties de la DOM. Une page contenant pouvez configurer l' application d'incorporation de l'environnement, de sorte que l'application embarquée pense il est en interaction avec le DOM d'un pleine page, mais n'est en fait qu' la manipulation d'une portion délimitée de l' contenant de la page par l'intermédiaire d'un mécanisme appelé virtuel iframes.

Le JavaScript qu'un Caja de l'application utilise est écrit dans un échec arrêter de sous-ensemble de JavaScript (en fait EcmaScript5). Ce sous-ensemble, appelé "Valija", comprend presque la totalité du langage JavaScript, mais supprime quelques erreurs construit comme avec et limite comment eval peut être utilisé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X