如何禁用浏览器开发人员工具?

问题描述 投票:58回答:9

我正在开发一个Web应用程序,因为它可以访问下面的数据库,我需要能够在Firefox和所有类似的应用程序中禁用Safari,Chrome,Firefox和Internet Explorer以及Firebug中的开发人员工具。有没有办法做到这一点?

注意:数据库提供的AJAX框架要求将数据库中的任何内容放在可以修改的Web参数中,并且返回的任何内容都将在JavaScript中处理。因此,当它返回一个值,例如用户是否可以访问网站的某个部分时,必须使用JavaScript处理,然后开发人员工具可以访问。所以这是必需的。

更新:对于那些仍然认为我做出错误假设的人,我确实问了供应商。以下是他们的回答:

以下是一些降低风险的建议:

1)使用javascript Obfuscator对代码进行模糊处理,并仅为已售出的应用程序提供模糊版本;保持非混淆版本自己进行编辑。这是一个在线混淆器:How can I obfuscate (protect) JavaScript? http://en.wikipedia.org/wiki/Obfuscated_code http://javascriptobfuscator.com/default.aspx

2)使用描述性较低的名称;也许'repeatedtasks.js'而不是'security.js',因为'security.js'可能更能让那些通过这类信息看重要的人更加突出。

javascript
9个回答
90
投票

不,你不能这样做。

开发人员菜单位于客户端,由用户的浏览器提供。

浏览器开发人员也应该与服务器端数据库代码无关,如果确实如此,则需要进行一些重大的重组。


50
投票

如果您的框架要求您在客户端进行授权,那么......

你需要改变你的框架

当您将应用程序放在野外时,您不信任的用户可以访问它;你必须在沙滩上划一条线。

  • 您拥有的物理硬件;并且可以锁在坚固的门后面。你可以在这里做任何你喜欢的事;这是保存数据库和执行授权功能以确定谁可以对数据库执行哪些操作的好地方。
  • 其他一切;在客户端计算机上包含浏览器;手机;便利亭位于办公大厅。你不能相信这些!永远!没有什么可以做的,这意味着你可以完全确定这些机器并不是骗人骗你和你的客户的钱。你无法控制它,所以你不可能希望知道发生了什么。

23
投票

事实上,这在某种程度上是可能的(how-does-facebook-disable-developer-tools),但这对保护您的数据非常不利。攻击者可能总是使用一些你无法控制的其他(开放的,自编写的)引擎。甚至javascript混淆可能只会减慢你的应用程序的一点点破解,但它也几乎没有安全性。

保护数据的唯一合理方法是在服务器端编写安全代码。请记住,如果您允许某人下载某些数据,他可以随心所欲地使用它。


19
投票

你的开发环境决不会让这个大脑死亡。它不可能。

我强烈建议给老板发电子邮件:

  • 培训/学习计划中需要一到两周的时间。
  • 需要与供应商一起提供足够的支持服务单,以确定如何执行服务器端验证。
  • 一个明确的警告,如果该工具无法进行服务器端验证,当您的整个数据库泄露/销毁/等等时,您将在华尔街日报的首页上取笑。

16
投票

不可以。无法为最终用户禁用开发人员工具。

如果您的应用程序不安全,如果用户可以访问开发人员工具,那么它只是简单不安全。


11
投票

不要忘记像Fiddler这样的工具。即使您锁定了所有浏览器的控制台,即使您使用HTTPS,也可以在客户端上修改http请求。 Fiddler可以捕获来自浏览器的请求,用户可以修改它并使用恶意输入重新播放。除非您保护您的AJAX请求,但我不知道如何执行此操作的方法。

只是不要相信从任何浏览器收到的任何输入。


1
投票

当这个答案发布的时候(2015年)更新,这个技巧是可能的。现在(2017年)浏览器已经成熟。以下技巧不再有效!

对的,这是可能的。 Chrome包含所有控制台代码

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

...所以该网站重新定义console._commandLineAPI投掷:

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

这是主要技巧!


-2
投票

您可以通过定义以下内容轻松禁用Developer工具:

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

在这里找到了:How does Facebook disable the browser's integrated Developer Tools?


-7
投票

布兰登,

你可以做这样的事情,这是一个非常基本的想法,你可以通过这样做来覆盖原生代码,这不是你想要的,你从这里发展

delete window.console

console.log('test'); // Noting will work
© www.soinside.com 2019 - 2024. All rights reserved.