Mi chiedo se è possibile eseguire il sandbox di JavaScript in esecuzione nel browser per impedire l'accesso alle funzionalità normalmente disponibili per il codice JavaScript in esecuzione in una pagina HTML.
Ad esempio, supponiamo di voler fornire un'API JavaScript agli utenti finali per consentire loro di definire i gestori di eventi da eseguire quando si verificano "eventi interessanti", ma non desidero che tali utenti accedano alle proprietà e alle funzioni window
dell'oggetto. Sono in grado di farlo?
Nel caso più semplice, diciamo che voglio impedire agli utenti di chiamare alert
. Un paio di approcci a cui riesco a pensare sono:
- Ridefinisci a
window.alert
livello globale. Non penso che questo sarebbe un approccio valido perché potrebbe essere utile utilizzare altro codice in esecuzione nella pagina (ovvero elementi non creati dagli utenti nei gestori di eventi)alert
. - Invia il codice del gestore eventi al server per l'elaborazione. Non sono sicuro che l'invio del codice al server per l'elaborazione sia l'approccio giusto perché i gestori di eventi devono essere eseguiti nel contesto della pagina.
Forse una soluzione in cui il server elabora la funzione definita dall'utente e quindi genera un callback da eseguire sul client funzionerebbe? Anche se questo approccio funziona, ci sono modi migliori per risolvere questo problema?
while (1) {}
--- si blocca e basta. Allo stesso modoa=[]; while (1) { a=[a,a]; }
.