Daha sonra komut dosyası etiketlerini yeniden etkinleştirmek isterseniz, benim çözümüm tarayıcı ortamını kırmaktı, böylece çalışan herhangi bir komut dosyası oldukça erken bir hata atacaktır. Ancak, tamamen güvenilir değildir, bu nedenle onu bir güvenlik özelliği olarak kullanamazsınız.
Global özelliklere erişmeye çalışırsanız, Chrome bir istisna oluşturur.
setTimeout("Math.random()")
Üzerine tüm üzerine yazılabilir özelliklerin üzerine yazıyorum window
, ancak diğer işlevselliği bozmak için genişletebilirsiniz.
window.allowJSExecution = inhibitJavaScriptExecution();
function inhibitJavaScriptExecution(){
var windowProperties = {};
var Object = window.Object
var console = window.console
var Error = window.Error
function getPropertyDescriptor(object, propertyName){
var descriptor = Object.getOwnPropertyDescriptor(object, propertyName);
if (!descriptor) {
return getPropertyDescriptor(Object.getPrototypeOf(object), propertyName);
}
return descriptor;
}
for (var propName in window){
try {
windowProperties[propName] = getPropertyDescriptor(window, propName)
Object.defineProperty(window, propName, {
get: function(){
throw Error("JavaScript Execution Inhibited")
},
set: function(){
throw Error("JavaScript Execution Inhibited")
},
configurable: true
})
} catch (err) {}
}
return function allowJSExecution(){
for (var propName in window){
if (!(propName in windowProperties)) {
delete windowProperties[propName]
}
}
for (var propName in windowProperties){
try {
Object.defineProperty(window, propName, windowProperties[propName])
} catch (err) {}
}
}
}