禁用JavaScript控制台调试的方法

2014-03-07 20

有几个巨头公司,即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$$) { 
} 
})();

虽然我人微言轻,但实际上我认为这种做法是合法的。从他们的角度来看,如果暂时禁用控制台有助于防止一个问题,那就不得不这样做。

但从长远来看,这真的不是一个好主意;其目标可能只是想要屏蔽依赖他们的目标用户。

无论如何,如果你想防止控制台执行脚本,这段代码看起来效果不错,也的确如此。

展开阅读全文

更多Javascript文章

学习面向对象之面向对象的术语
Nov 30 24
js实现浏览器的各种菜单命令比如打印、查看源文件等等
Oct 24 22
用js替换除数字与逗号以外的所有字符的代码
Jun 07 23
javascript的几种继承方法介绍
Mar 22 18
浅谈vue+webpack项目调试方法步骤
Sep 11 11
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 23
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 14
手机访问当前页面