我是 Facebook 的一名安全工程师,这是我的错。我们正在对一些用户进行测试,看看它是否可以减缓一些攻击,即用户被诱骗将(恶意)JavaScript 代码粘贴到浏览器控制台中。
需要明确的是:试图阻止黑客客户端是一种bad idea https://stackoverflow.com/questions/7559409/disable-developer-tools一般来说;
这是为了防止特定的社会工程攻击 https://www.facebook.com/photo.php?v=956977232793.
如果您最终加入了测试组并对此感到恼火,那么抱歉。
我尝试制作旧的选择退出页面(现在帮助页面 https://www.facebook.com/selfxss)尽可能简单,同时仍然足够可怕,至少可以停下来some的受害者。
实际的代码非常类似于@joeldixon66 的链接 https://stackoverflow.com/a/21692733;我们的情况有点复杂,但没有什么充分的理由。
Chrome 将所有控制台代码包装在
with ((console && console._commandLineAPI) || {}) {
<code goes here>
}
...所以网站重新定义console._commandLineAPI
扔:
Object.defineProperty(console, '_commandLineAPI',
{ get : function() { throw 'Nooo!' } })
This is 还不够(尝试一下!) http://escape.alf.nu/20,但这就是
主要技巧。
结语:Chrome 团队认为从用户端 JS 击败控制台是一个错误,并且解决了问题 https://code.google.com/p/chromium/issues/detail?id=349993,使该技术无效。之后又增加了额外的保护保护用户免受自我xss攻击 https://code.google.com/p/chromium/issues/detail?id=345205#c21.