我正在开发一个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'可能更能让那些通过这类信息看重要的人更加突出。
不,你不能这样做。
开发人员菜单位于客户端,由用户的浏览器提供。
浏览器开发人员也应该与服务器端数据库代码无关,如果确实如此,则需要进行一些重大的重组。
如果您的框架要求您在客户端进行授权,那么......
你需要改变你的框架
当您将应用程序放在野外时,您不信任的用户可以访问它;你必须在沙滩上划一条线。
事实上,这在某种程度上是可能的(how-does-facebook-disable-developer-tools),但这对保护您的数据非常不利。攻击者可能总是使用一些你无法控制的其他(开放的,自编写的)引擎。甚至javascript混淆可能只会减慢你的应用程序的一点点破解,但它也几乎没有安全性。
保护数据的唯一合理方法是在服务器端编写安全代码。请记住,如果您允许某人下载某些数据,他可以随心所欲地使用它。
你的开发环境决不会让这个大脑死亡。它不可能。
我强烈建议给老板发电子邮件:
不可以。无法为最终用户禁用开发人员工具。
如果您的应用程序不安全,如果用户可以访问开发人员工具,那么它只是简单不安全。
不要忘记像Fiddler这样的工具。即使您锁定了所有浏览器的控制台,即使您使用HTTPS,也可以在客户端上修改http请求。 Fiddler可以捕获来自浏览器的请求,用户可以修改它并使用恶意输入重新播放。除非您保护您的AJAX请求,但我不知道如何执行此操作的方法。
只是不要相信从任何浏览器收到的任何输入。
当这个答案发布的时候(2015年)更新,这个技巧是可能的。现在(2017年)浏览器已经成熟。以下技巧不再有效!
对的,这是可能的。 Chrome包含所有控制台代码
with ((console && console._commandLineAPI) || {}) {
<code goes here>
}
...所以该网站重新定义console._commandLineAPI
投掷:
Object.defineProperty(console, '_commandLineAPI',
{ get : function() { throw 'Nooo!' } })
这是主要技巧!
您可以通过定义以下内容轻松禁用Developer工具:
Object.defineProperty(console, '_commandLineAPI', { get : function() { throw 'Nooo!' } })
在这里找到了:How does Facebook disable the browser's integrated Developer Tools?
布兰登,
你可以做这样的事情,这是一个非常基本的想法,你可以通过这样做来覆盖原生代码,这不是你想要的,你从这里发展
delete window.console
console.log('test'); // Noting will work