禁用JavaScript控制台调试的方法
有几个巨头公司,即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$$) {
}
})();
虽然我人微言轻,但实际上我认为这种做法是合法的。从他们的角度来看,如果暂时禁用控制台有助于防止一个问题,那就不得不这样做。
但从长远来看,这真的不是一个好主意;其目标可能只是想要屏蔽依赖他们的目标用户。
无论如何,如果你想防止控制台执行脚本,这段代码看起来效果不错,也的确如此。
相关推荐
-
Js 订制自己的AlertBox(信息提示框)
本文制作一个用户自定义的AlertBox,效果如图:js文件中插入如下代码: 复制代码 代码如下: // JScript 文件 // constants to define the title of the alert and button text. var ALERT_TITLE = "Oops!"; var ALERT_BUTTON_TEXT = "Close"; // over-ride the alert method only if this a new
-
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
js中输出信息的方法内容如下所示: 1.文档流输出 document.write('hello'); 2.输出信息提示框 模态对话框 window.alert('要输出显示的内容'); 或 alert('要输出显示的内容'); alert(n); 3.信息确认框 var f = window.confirm('是否要进入新浪网'); confirm(""); if(f){ location.href = 'http://www.sina.com.cn'; } 4.提示输入框 windo
-
一个用js实现控制台控件的代码
复制代码 代码如下: <body margin="0"> </body> <script> function Console(width,height,command) { var container=document.createElement("div"); this.container=container; container.runtimeStyle.width=(width
-
javascript控制台详解
一.显示信息的命令 console.log(); //控制台输入 网页中不会输出 console.info(); //一般信息 console.debug(); //除错信息 console.warn(); //警告提示 console.error(); //错误提示 "console.log();" 可以用来取代 "alert();" 或 "document.write();" 比如,在网页中写入 "console.log("
-
javascript中常见的3种信息提示框(alert,prompt,confirm)
1.警告提示框 alert("文本"). ex. function disp_alert() { alert("我是警告框!!"+'\n'+"hhah")//有折行 } [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 2.确认提示框(confirm,返回true或者false) function show_confirm() { var r=confirm("Press a button!"); if (r==tr
-
AngularJS 如何在控制台进行错误调试
当我们在编写 AngularJS 的应用时,通过 Chrome, Firefox, 和 IE 的 JavaScript 控制台来获取隐藏在应用之中的数据(Data)和服务(Service) 是一件非常具有挑战性的工作.下面列出了一些简单的小窍门,可以帮助我们使用 Javascript 控制台来监视和控制一个正在运行的 Angular 应用,使其更加容易测试.修改甚至是实时的编写 Angular 应用. 1: 获取 Scopes (作用域) 我们可以使用一行 JS 代码来获取任何的 Scope (
-
JS简单实现仿百度控制台输出信息效果
本文实例讲述了JS简单实现仿百度控制台输出信息效果.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <h3>打开控
-
利用浏览器的Javascript控制台调试PHP程序
PHP是一种服务器端脚本语言,用来开发动态web应用程序.与JAVA相比,没有一个好的服务器端调试工具是其限制之一.通常我们都是在PHP代码中添加echo.var_dump等语句,将变量.数组的值显示在浏览器中来达到调试的目的. 现在,越来越多的浏览器都有了开发这工具或者Javascript控制台,通过这些工具,我们可以很方便的显示PHP代码中的变量或数组值.下面我们来做一个例子.例子中的PHP代码有四个跟踪级别:info, warn, log, error,开发人员可以使用浏览器控制台来显示错
-
js调试系列 控制台命令行API使用方法
先打开百度,然后按 F12 打开后,如果不是 Console 项的就点击 Console 这项,因为我们要在控制台操作.. 看到如下内容: 好了我们先清空内容,可以右击选 Clear console 菜单,或者输入 clear() 都行. 接着,我们输入 document.getElementById('kw1'); 然后回车,就可以看到 id 为 kw1 的元素信息了. 是不是很简单.下一步是用 console.dir 查看该元素信息. 输入 console.dir(document.getE
-
如何使Chrome控制台支持多行js模式——意外发现
一直以来,Chrome控制台都缺少象IE调试台那样的多行执行模式. 今天意外发现Chrome其实也支持多行模式.默认在Chrome控制台上输入回车后会执行该命令,只需要通过输入Shift+Enter来新建行即可.
随机推荐
- 二进制文件转换为文本工具
- ExtJS 工具栏 分页事件参数
- iOS开发使用GDataXML框架解析网络数据
- 如何使用PHP给图片加水印
- php 来访国内外IP判断代码并实现页面跳转
- Linux系统下PHP-FPM的安装和配置教程
- destoon复制新模块的方法
- win10 下安装 mysql 5.7.14 详细图文教程
- 角逐网络江湖—黑客兵器谱排名
- Powershell生成Windows密码算法简单学习
- MySQL 5.7.17压缩版安装笔记
- SQL SERVER修改函数名容易引发的问题分析
- 深入浅析search 搜索框的写法
- Add a Picture to a Microsoft Word Document
- Nginx中共享session会话配置方法例子
- JAVA-NIO之Socket/ServerSocket Channel(详解)
- PHP中的gzcompress、gzdeflate、gzencode函数详解
- c# 方法可变数量的参数
- vue实现nav导航栏的方法
- 基于android布局中的常用占位符介绍