我是Facebook的安全工程师,这是我的错。我们正在为一些用户测试这一点,看看它是否可以减缓一些攻击,在这些攻击中,用户被诱骗将(恶意)JavaScript代码粘贴到浏览器控制台中。
需要明确的是:试图阻止黑客客户端通常是一个坏主意;这是为了防止特定的社会工程攻击。
如果您最终进入了测试组并对此感到恼火,很抱歉。我试图使旧的选择退出页面(现在是帮助页面)尽可能简单,同时仍然足够可怕,以阻止至少一些受害者。
实际代码与@joeldixon66的链接非常相似;我们的没有充分的理由有点复杂。
Chrome 会将所有控制台代码包装在
with ((console && console._commandLineAPI) || {}) {
<code goes here>
}
...所以网站重新定义抛出:console._commandLineAPI
Object.defineProperty(console, '_commandLineAPI',
{ get : function() { throw 'Nooo!' } })
这还不够(试试吧!),但这是主要的技巧。
结语:Chrome团队认为从用户端JS击败控制台是一个错误,并修复了这个问题,使这种技术无效。之后,添加了额外的保护来保护用户免受自我xss的侵害。