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

IT技术 javascript
2021-01-21 09:52:07

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

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

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

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

1) 使用 javascript Obfuscator 对代码进行混淆,只提供混淆后的版本;保留未混淆的版本供自己进行编辑。这是一个在线混淆器: 如何混淆(保护)JavaScript? http://en.wikipedia.org/wiki/Obfuscated_code http://javascriptobfuscator.com/default.aspx

2)使用描述性较低的名称;也许 'repeatedtasks.js' 而不是 'security.js',因为 'security.js' 可能会更突出任何浏览此类信息作为重要信息的人。

6个回答

不,你不能这样做

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

此外,浏览器开发人员应该与您的服务器端数据库代码无关,如果有,您需要进行一些 maaaaaajor 重组。

想象一下,让所有东西都被盗/擦除会更昂贵。
2021-03-13 09:52:07
我认为您需要阅读更多 4D 文档。从我在他们网站上看到的,有很多服务器端的东西,包括 PHP 库。
2021-03-29 09:52:07
@Brandon 什么类型的语言会有这么大的安全漏洞??!!
2021-03-30 09:52:07
@Brandon永远不要相信客户端的过滤器。从不(我再次重复从不)。无论您在客户端有什么,总是在服务器端做更多的验证
2021-04-05 09:52:07
这个线程太乱了;我不敢相信我在读什么。您是否处于某种超安全环境中,除了前端界面之外,什么都无法访问?显然不是,因为您在谈论常规浏览器。考虑一下:我可以设置代理服务器并拦截来自我的计算机的所有数据。然后我可以操纵绕过在客户端上完成的所有验证和混淆。我们有服务器是有原因的。这太疯狂了。
2021-04-11 09:52:07

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

你需要改变你的框架

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

  • 您拥有的物理硬件;并且可以锁在一扇坚固的门后面。 你可以在这里做任何你喜欢的事情;这是保存您的数据库和执行授权功能以决定谁可以对您的数据库执行哪些操作的好地方。
  • 其他一切;包括客户端计算机上的浏览器;手机;位于您办公室大堂的便利亭。 你不能相信这些!曾经! 您无能为力,这意味着您可以完全确定这些机器不会说谎以骗取您和您的客户的钱财。你无法控制它,所以你永远无法希望知道发生了什么。
我的意思是我认为有些硬件级别不是您自己的,在大多数情况下是可以信任的 - 例如云提供商
2021-03-20 09:52:07

事实上,这在某种程度上是可能的(how-does-facebook-disable-developer-tools),但这对于保护您的数据来说是非常糟糕的主意。攻击者可能总是使用其他一些您无法控制的(开放的、自行编写的)引擎。即使 javascript 混淆可能只会减慢您的应用程序的破解速度,但它实际上也没有提供任何安全性。

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

请阅读链接问题,并仔细回答;facebook 使用的技术保护无辜用户免受特定类型的社会工程攻击;它不能保护应用程序免受恶意用户的侵害;例如,恶意用户可以将他们自己构建的 Chrome 与_commandLineAPI其他一些短语一起使用,并且可以完全访问开发人员工具。这些都不会以任何方式使现有的旧答案无效。
2021-03-30 09:52:07

有没有办法,你的开发环境是这个死脑筋。就是不可能。

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

  • 在培训/学习计划中需要一两个星期。
  • 要求您的供应商提供足够的支持票,以确定如何执行服务器端验证。
  • 一个明确的警告,如果该工具不能进行服务器端验证,那么当您的整个数据库被泄露/破坏/等时,您在华尔街日报的头版被取笑。
尽管也许值得一提的是,如果数据库将您的午餐选择存储在办公室附近,谁更喜欢哪个食品推车,以及一些算法来选择适合您聚会中每个人的午餐地点,这可能没问题。如果数据库包含客户详细信息,那么您别无选择,只能请求供应商教您如何进行服务器端验证——如果失败,请确保您的老板知道选择的后果。
2021-03-17 09:52:07
你现在认为但等到我改变其他人的午餐偏好以匹配我自己的>:]
2021-03-17 09:52:07
你显然不知道如果没有午餐,脾气暴躁的员工会怎么样。我想如果他们有这个数据库和另一个浏览器无法访问的数据库,那么拥有第一个数据库有什么意义呢?
2021-03-19 09:52:07
我是食品卡车的老板,我将改变你所有的午餐偏好,让你去我的食品卡车而不是我的竞争对手!
2021-04-08 09:52:07

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

如果您的应用程序在用户有权访问开发人员工具的情况下不安全,那么它就是不安全的。

@JustinNiessner 好吧,从技术上讲,您无法使用开发工具,因为它们已被禁用……但是,这不是安全性,甚至几乎没有混淆。
2021-03-18 09:52:07
实际上它是:kspace.in/blog/2013/02/22/... 虽然不是说这是个好主意。
2021-03-20 09:52:07
@autra - 但请记住,“修复”还将禁用任何开发人员在应用程序上工作的控制台(当然,您可以根据需要添加/删除脚本)。它也不会阻止任何人使用开发工具修改页面上的脚本、删除修复、重新加载和以这种方式访问​​控制台。
2021-04-01 09:52:07
@lwansbrough:(1)禁用控制台不会禁用其他开发人员工具(例如,允许在页面上编辑脚本的工具)。(2) 这些技术甚至没有禁用控制台,只是通过重命名内置全局变量等使其不兼容。贾斯汀是绝对正确的,它可以撤消。或者代理服务器可以首先去掉反控制台代码。
2021-04-01 09:52:07
不幸的是,服务器必须响应 javascript 方法才能发生任何事情,并且可以使用我们必须使用的语言修改该 javascript 方法
2021-04-02 09:52:07