有幾家巨頭公司,即Facebook和Netflix,決定禁止用戶在控制台(console)執行JavaScript指令。
最初這是 由Facebook開始的 ,用於防止惡意用戶透過JavaScript控制台執行特定的命令散播訊息(發送給所有Facebook用戶大量垃圾訊息)。
當然這受到很多指責,但在我參與之前, 他們使用的程式碼如下所示:
// 看起來Netflix 似乎是唯Facebook 馬首是瞻[https://news.ycombinator.com/item?id=7222129].
(function() {
try {
var $_console$$ = console;
Object.defineProperty(window, "console", {
get: function() {
if ($_console$$._commandLineAPI )
throw "抱歉, 為了使用者安全, 本網站已停用console腳本功能";
return $_console$$
},
set: function($val$$) {
$_console$$ = $val$$
}
})
} catch ($ignore$$) {
}
})();
雖然我人微言輕,但實際上我認為這種做法是合法的。從他們的角度來看,如果暫時禁用控制台有助於防止一個問題,那就不得不這樣做。
但從長遠來看,這真的不是一個好主意;其目標可能只是想要屏蔽依賴他們的目標用戶。
無論如何,如果你想防止控制台執行腳本,這段程式碼看起來效果不錯,也的確如此。