禁用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 相关文章推荐
jquery 经典动画菜单效果代码
Jan 26 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
jquery 图片缩放拖动的简单实例
Jan 08 Javascript
node.js中的fs.chmodSync方法使用说明
Dec 18 Javascript
jQuery实现查找链接文字替换属性的方法
Jun 27 Javascript
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
详解.vue文件中监听input输入事件(oninput)
Sep 19 Javascript
vue 运用mock数据的示例代码
Nov 07 Javascript
JavaScript动态创建二维数组的方法示例
Feb 01 Javascript
vue实现图片预览组件封装与使用
Jul 13 Javascript
JS实现百度搜索框
Feb 25 Javascript
详解Vue的列表渲染
Nov 20 Vue.js
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
php5 and xml示例
2006/11/22 PHP
PHP开发入门教程之面向对象
2006/12/05 PHP
PHP中nowdoc和heredoc使用需要注意的一点
2014/03/21 PHP
PHP智能识别收货地址信息实例
2019/01/05 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
js left,right,mid函数
2008/06/10 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
Vue常见面试题整理【值得收藏】
2018/09/20 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
手把手教你使用TypeScript开发Node.js应用
2019/05/06 Javascript
微信小程序位置授权处理方法
2019/06/13 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python实现图片变亮或者变暗的方法
2015/06/01 Python
Python下载网络小说实例代码
2018/02/03 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
python射线法判断一个点在图形区域内外
2019/06/28 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
公司户外活动总结
2014/07/04 职场文书
意外伤害赔偿协议书
2014/09/16 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
岗位聘任协议书
2015/09/21 职场文书
Golang jwt身份认证
2022/04/20 Golang