禁用JavaScript控制台调试的方法


Posted in Javascript onMarch 07, 2014

有几个巨头公司,即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 相关文章推荐
用js统计用户下载网页所需时间的脚本
Oct 15 Javascript
JavaScript中Cookie操作实例
Jan 09 Javascript
jquery实现的淡入淡出下拉菜单效果
Aug 25 Javascript
如何判断出一个js对象是否一个dom对象
Nov 24 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
May 03 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
Oct 26 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
Apr 02 Javascript
Javascript通过控制类名更改样式
May 24 Javascript
详解vue-flickity的fullScreen功能实现
Apr 07 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
Sep 25 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
Jan 11 Javascript
一文了解JavaScript用Element Traversal新属性遍历子元素
Nov 27 Javascript
jquery日历控件实现方法分享
Mar 07 #Javascript
jquery.form.js用法之清空form的方法
Mar 07 #Javascript
jquery设置按钮停顿3秒不可用
Mar 07 #Javascript
jquery 实现两级导航菜单附效果图
Mar 07 #Javascript
document.addEventListener使用介绍
Mar 07 #Javascript
开发中可能会用到的jQuery小技巧
Mar 07 #Javascript
javascript匿名函数应用示例介绍
Mar 07 #Javascript
You might like
Java和PHP在Web开发方面对比分析
2015/03/01 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
2016/05/26 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
基于复选框demo(分享)
2017/09/27 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[01:04:05]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
取numpy数组的某几行某几列方法
2018/04/03 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
2018/07/04 Python
python利用tkinter实现屏保
2019/07/30 Python
Django中使用haystack+whoosh实现搜索功能
2019/10/08 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
Python约瑟夫生者死者小游戏实例讲解
2021/01/04 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
iframe在移动端的缩放的示例代码
2018/10/12 HTML / CSS
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
LTD Commodities:礼品,独特发现,家居装饰,家用器皿
2017/08/11 全球购物
Wiggle澳大利亚:自行车、跑步、游泳商店
2020/11/07 全球购物
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
Python图像处理之图像拼接
2021/04/28 Python
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers