Можно ли использовать javascript для песочницы, переопределяя различные функции, такие как alert
, window.location
и eval
?
Я не ищу идеального решения. Я уверен, что некоторые люди все равно найдут способ переставить divs, чтобы описать ругательства или что-то злонамеренное, но если бы я мог отключить переадресацию страниц на 100%, я был бы в основном счастлив.
Я пробовал в Chrome и делал что-то вроде
context={}; //use this to prevent `this` from being `window`
context.f=function(){
var window=null,location=null,eval=function(){};
console.log(window); //also the other two
};
context.f();
кажется многообещающим. Если я заменил строку console
на код, отправленный пользователем (проверка на балансировку пар), это была бы абсурдно плохая идея или слегка плохая идея? В Chrome я все еще могу сломать вещи, перейдя через this
к функции и переопределяя вещи, но это было бы приемлемо для меня.