Je me demandais si il est possible de sandbox JavaScript s'exécutant dans le navigateur pour empêcher l'accès à des fonctions qui sont normalement disponibles à l'exécution de code JavaScript dans une page HTML.
Par exemple, disons que je veux fournir une API JavaScript pour la fin d'utilisateurs pour leur permettre de définir des gestionnaires d'événements pour être exécuté lors de la "événements intéressants, mais je ne veux pas que les utilisateurs d'accéder aux propriétés et fonctions de l' window
objet. Suis-je capable de faire cela?
Dans le cas le plus simple, disons que je veux pour empêcher les utilisateurs appelant alert
. Un couple des approches que je peux penser sont:
- Redéfinir
window.alert
à l'échelle mondiale. Je ne pense pas que ce serait une approche valable, parce que d'autres l'exécution de code dans la page (c'est à dire des trucs pas créés par les utilisateurs dans leurs gestionnaires d'événements) pourriez utiliseralert
. - Envoyer le code de gestionnaire d'événements pour le serveur. Je ne suis pas sûr que le fait d'envoyer le code pour le serveur de processus est la bonne approche, car les gestionnaires d'événements doit s'exécuter dans le contexte de la page.
Peut-être une solution où le serveur traite la fonction définie par l'utilisateur et génère ensuite un rappel pour être exécuté sur le client pourrait fonctionner? Même si cette approche fonctionne sont t-il de meilleures façons de résoudre ce problème?