所以很明显,由于最近的诈骗,开发者工具被人们用来发布垃圾邮件,甚至被用来"黑客"账户.Facebook屏蔽了开发者工具,我甚至不能使用控制台.

在此处输入图像描述

他们是怎么做到的??但Facebook已经证明他们错了.

只要进入Facebook,打开开发者工具,在控制台中输入一个字符,就会弹出这个警告.不管你投入什么,都不会被执行.

这怎么可能?

他们甚至在控制台中屏蔽了自动完成功能:

在此处输入图像描述

推荐答案

我是Facebook的安全工程师,这是我的错.我们正在对一些用户进行测试,看看它是否能减缓一些用户被诱骗向浏览器控制台粘贴(恶意)JavaScript代码的攻击.

需要明确的是:试图在客户端阻止黑客通常是bad idea分;

如果您最终进入了测试组,并且对此感到恼火,请道歉.

实际代码与@joeldixon66's link非常相似;我们的有点复杂,没什么好理由.

Chrome将所有控制台代码封装在

with ((console && console._commandLineAPI) || {}) {
  <code goes here>
}

... 因此,该网站重新定义了console._commandLineAPI扔:

Object.defineProperty(console, '_commandLineAPI',
   { get : function() { throw 'Nooo!' } })

这是not quite enough (try it!),但这是最重要的


结语:Chrome团队认为,从用户端JS击败控制台是一个错误和fixed the issue,这使得这种技术无效.之后,protect users from self-xss增加了额外的保护.

Javascript相关问答推荐

警告!合同执行期间遇到错误[执行已恢复](Base Layer 2)

在页面上滚动 timeshift 动垂直滚动条

并不是所有的iframe都被更换

在使用HighChats时如何避免Datatables重新初始化错误?

PDF工具包阿拉伯字体的反转数字

闭包是将值复制到内存的另一个位置吗?

如何在使用rhandsontable生成表时扩展数字输入验证?

如何将数组用作复合函数参数?

Puppeteer上每页的useProxy返回的不是函数/构造函数

Jest toHaveBeenNthCalledWith返回当前设置的变量值,而不是调用时的值

如何限制显示在分页中的可见页面的数量

使用自动识别发出信号(&Q)

使用jQuery find()获取元素的属性

Phaser3 preFX addGlow不支持zoom

用于测试其方法和构造函数的导出/导入类

ComponentWillReceiveProps仍在React 18.2.0中工作

我如何才能获得价值观察家&对象&S的价值?

如何在preLoad()中自定义p5.js默认加载动画?

Vue3合成API.来自本地存储的对象始终返回UNDEFINED

从D3 v3更新,没有错误,但输出SVG路径不可见