Je me demande s'il est possible de sandbox JavaScript s'exécutant dans le navigateur pour empêcher l'accès aux fonctionnalités qui sont normalement disponibles pour le code JavaScript s'exécutant dans une page HTML.
Par exemple, disons que je souhaite fournir une API JavaScript aux utilisateurs finaux pour leur permettre de définir des gestionnaires d'événements à exécuter lorsque des "événements intéressants" se produisent, mais je ne veux pas que ces utilisateurs accèdent aux propriétés et aux fonctions de l' window
objet. Suis-je capable de faire ça?
Dans le cas le plus simple, disons que je veux empêcher les utilisateurs d'appeler alert
. Quelques approches auxquelles je peux penser sont:
- Redéfinissez
window.alert
globalement. Je ne pense pas que ce serait une approche valide car d'autres codes exécutés dans la page (c'est-à-dire des éléments non créés par les utilisateurs dans leurs gestionnaires d'événements) pourraient vouloir utiliseralert
. - Envoyez le code du gestionnaire d'événements au serveur à traiter. Je ne suis pas sûr que l'envoi du code au serveur à traiter soit la bonne approche car les gestionnaires d'événements doivent s'exécuter dans le contexte de la page.
Peut-être qu'une solution où le serveur traite la fonction définie par l'utilisateur puis génère un rappel à exécuter sur le client fonctionnerait? Même si cette approche fonctionne, existe-t-il de meilleures façons de résoudre ce problème?
while (1) {}
--- il se bloque juste. De mêmea=[]; while (1) { a=[a,a]; }
.