Ich frage mich, ob es möglich ist, JavaScript im Browser zu sandboxen, um den Zugriff auf Funktionen zu verhindern, die normalerweise für JavaScript-Code verfügbar sind, der auf einer HTML-Seite ausgeführt wird.
Angenommen, ich möchte Endbenutzern eine JavaScript-API bereitstellen, mit der sie Ereignishandler definieren können, die ausgeführt werden sollen, wenn "interessante Ereignisse" auftreten. Ich möchte jedoch nicht, dass diese Benutzer auf die Eigenschaften und Funktionen des window
Objekts zugreifen . Kann ich das machen?
Nehmen wir im einfachsten Fall an, ich möchte verhindern, dass Benutzer anrufen alert
. Einige Ansätze, die mir einfallen, sind:
- Neu definiert
window.alert
global. Ich denke nicht, dass dies ein gültiger Ansatz wäre, da möglicherweise anderer Code, der auf der Seite ausgeführt wird (dh Dinge, die nicht von Benutzern in ihren Ereignishandlern erstellt wurden), verwendet werden möchtealert
. - Senden Sie den Ereignishandlercode zur Verarbeitung an den Server. Ich bin nicht sicher, ob das Senden des Codes an den Server zur Verarbeitung der richtige Ansatz ist, da die Ereignishandler im Kontext der Seite ausgeführt werden müssen.
Vielleicht würde eine Lösung funktionieren, bei der der Server die benutzerdefinierte Funktion verarbeitet und dann einen Rückruf generiert, der auf dem Client ausgeführt werden soll? Auch wenn dieser Ansatz funktioniert, gibt es bessere Möglichkeiten, dieses Problem zu lösen?
while (1) {}
--- schützen kann. Er hängt einfach. Ebensoa=[]; while (1) { a=[a,a]; }
.