Zastanawiam się, czy możliwe jest piaskownica JavaScript działająca w przeglądarce, aby uniemożliwić dostęp do funkcji, które są normalnie dostępne dla kodu JavaScript działającego na stronie HTML.
Na przykład, powiedzmy, że chcę zapewnić użytkownikom końcowym JavaScript API, aby umożliwić im zdefiniowanie programów obsługi zdarzeń, które mają być uruchamiane, gdy wystąpią „interesujące zdarzenia”, ale nie chcę, aby ci użytkownicy mieli dostęp do właściwości i funkcji window
obiektu. Czy jestem w stanie to zrobić?
W najprostszym przypadku powiedzmy, że chcę uniemożliwić użytkownikom dzwonienie alert
. Oto kilka podejść, które przychodzą mi do głowy:
window.alert
Globalnie przedefiniuj . Nie sądzę, żeby to było właściwe podejście, ponieważ inny kod działający na stronie (tj. Rzeczy, które nie zostały utworzone przez użytkowników w ich programach obsługi zdarzeń) mogą chcieć użyćalert
.- Wyślij kod obsługi zdarzeń do serwera w celu przetworzenia. Nie jestem pewien, czy wysłanie kodu do serwera w celu przetworzenia jest właściwym podejściem, ponieważ programy obsługi zdarzeń muszą działać w kontekście strony.
Być może rozwiązanie, w którym serwer przetwarza funkcję zdefiniowaną przez użytkownika, a następnie generuje wywołanie zwrotne do wykonania na kliencie, zadziała? Nawet jeśli to podejście działa, czy istnieją lepsze sposoby rozwiązania tego problemu?
while (1) {}
--- po prostu się zawiesza. Podobniea=[]; while (1) { a=[a,a]; }
.