Me pregunto si es posible crear un sandbox de JavaScript en el navegador para evitar el acceso a funciones que normalmente están disponibles para el código JavaScript que se ejecuta en una página HTML.
Por ejemplo, supongamos que quiero proporcionar una API de JavaScript para que los usuarios finales les permitan definir manejadores de eventos que se ejecutarán cuando ocurran "eventos interesantes", pero no quiero que esos usuarios accedan a las propiedades y funciones del window
objeto. ¿Soy capaz de hacer esto?
En el caso más simple, digamos que quiero evitar que los usuarios llamen alert
. Un par de enfoques que puedo pensar son:
- Redefinir
window.alert
globalmente. No creo que este sea un enfoque válido porque podría querer usar otro código que se ejecute en la página (es decir, material no creado por los usuarios en sus controladores de eventos)alert
. - Envíe el código del controlador de eventos al servidor para procesar. No estoy seguro de que enviar el código al servidor para procesar sea el enfoque correcto porque los controladores de eventos deben ejecutarse en el contexto de la página.
¿Quizás una solución en la que el servidor procese la función definida por el usuario y luego genere una devolución de llamada que se ejecutará en el cliente funcionaría? Incluso si ese enfoque funciona, ¿hay mejores maneras de resolver este problema?
while (1) {}
--- simplemente se cuelga. Del mismo modoa=[]; while (1) { a=[a,a]; }
.