2010-05-20 206 views

回答

15

如果在启用Firebug时网站的性能受到影响,您可能希望显示一条警告,要求用户将其关闭。 You can easily detect if Firebug is enabled through JavaScript

+5

+1这就是gmail所做的。 – 2010-05-20 20:54:28

+2

+1,这可能是您的所有网站都可以做到的。此外,您可以尝试记录哪些用户启用了该功能,是否会导致您的页面运行缓慢等等。至少如果他们抱怨,您可以说:“好吧,如果您已经按照我们的要求关闭了萤火虫。 ..“ – 2010-05-20 20:55:43

6

您可以点击Off按钮来禁用它。

还是你想阻止你的用户运行它?如果是这样,祝你好运......

4

任何你发送给客户端,所有你的JavaScript,是开放给你送不管是谁,至。没有任何你不希望人们看到的东西。无法阻止其他人的浏览器使用Firebug或其他许多工具来分析您的代码。你可以尝试使你的html,css和javascript 真的很差,这可能会减慢它们!有混淆程序使其难以阅读。如果你想隐藏功能,你需要在服务器上进行。

+0

我喜欢它,当我得到更多选票时,它将upvote。 – Josh 2010-05-20 21:31:39

7

不是。无论如何,没有人想要你的javascript例程。 :-)

如果你担心不安全的代码,你应该重写你的网站是安全的,而不是试图隐藏它的问题。

+4

”我的javascript例程“属于我工作的公司,我的公司希望我们开发的东西安全。对你没有冒犯性,但你的回答既没有用,也很傲慢。 – 2010-05-20 21:29:56

+8

@William:告诉你的公司,如果他们想要“安全”的东西,他们不应该把它放在公共网页上。 – 2010-05-20 22:12:25

+0

对于对“你的公司”,呃,无知的应用开发经理的错误追求,我提供了一个有用的观点。但没有冒犯。 – 2010-05-20 23:04:56

4

您可以在Flash,Silverlight或Java中开发您的网站。然后,Firebug将被限制为显示您的基本HTML。

我假设你担心使用FireBug进行逆向工程。

+0

不幸的是,我无法做到这一点,我需要的一切都是完全HTML。我所开发的网站不属于我,而是我所服务的公司,无论如何。 – 2010-05-20 21:30:41

15

警告:EXTREME EVIL。永远不要使用此代码。而且,它不会阻止一个足智多谋的人。

setTimeout(checkForFirebug, 100); 
function checkForFirebug() 
{ 
    if (window.console && window.console.firebug) { 
     while(true); //Firebug is enabled 
    } 
    setTimeout(checkForFirebug, 100); 
} 

编辑:我想我会提供一个答案的问题背后的真正问题。事实是,Javascript是一种解释型语言,解释器在浏览器中。这使得提供既安全又可运行的Javascript几乎是不可能的。 HTML和CSS也是如此。你可以做的最好的事情是缩小Javascript,使它不那么容易重用。如果这家公司真的想要“安全”的Javascript,那么你只需告诉他们这不是真的可能。

+4

我不知道是要+还是 - 这个级别的邪恶。 – 2010-05-20 21:07:25

+0

+1最优秀。 – 2010-05-20 21:08:32

+5

这个简单的解决方法是在加载页面之前禁用JavaScript。这实际上并不能保护你的代码,但它可能会让你的用户失望。就像大多数邪恶的东西一样,它也很愚蠢。 – 2010-05-20 21:10:18

1

最终,没有,因为他们的机器上的浏览器(在这种情况下,Firefox)可以选择运行它想要的任何JavaScript(如萤火虫)。您无法阻止用户与您的网站一起运行它。

3

不,当然不是。如果Firebug揭示了一些你必须阻止用户看到的东西,那么你完全错误地解决了这个问题。我并非试图粗鲁或有辱人格,而是试图阻止一个特定的程序,努力修复您的Web应用程序中的错误,这与一桶蒸汽一样合乎逻辑。 Firebug没有什么不可思议的;我可以通过编写一些代码来做任何事情。话虽如此,必须有一个潜在的问题,你应该更关心。

如果你想保护你的代码
+0

我从来没有提到任何有关错误的问题,我的问题很简单明了。根本问题是我的公司要求我们开发的任何JavaScript代码都是安全的。 – 2010-05-20 21:31:46

+2

但这不可能 – Petter 2010-05-20 21:57:50

+2

@William没有冒犯,但是你的公司需要更好地掌握在这种情况下“安全”的含义。 – deceze 2010-05-20 22:14:58

1

,你可以尝试加密你的JavaScript源代码

google encrypt javascript source

+1

请注意,假装成浏览器的人可能会破解加密(可能使用犀牛)。 – 2010-05-20 22:34:48

+0

是正确的,它只会让它变得更难一些,但最终如果一台电脑可以显示它/读取它/使用它,某人将能够复制它。 – Mauro 2010-05-21 07:22:57

7

如果你想隐藏的访客你的HTML/CSS/JavaScript的,这是不可能的。即使不能使用Firebug,也可以简单地查看HTML源代码。任何外部JavaScript和样式表都可以作为纯文本文件下载。由于HTML,CSS和JavaScript是客户端技术,它们以纯文本形式下载并由Web浏览器解释,理论上不可能隐藏您的代码。你可以做的最好的事情是让代码更难了解,就是混淆吧。见Wikipedia

5

“我的javascript例程”属于我工作的公司,我的公司希望我们开发的东西安全。

您可以通过当他们使用一个特定的调试工具轻轻拍着“黑客”在手指不安全东西。尽量防止他们使用最终的黑客工具:“查看源代码”。

如果它在那里它就在那里。 “安全”在这方面意味着不同的东西。这意味着即使在完全了解源代码的情况下,通过采用难以穿透的技术来确保您拥有的任何重要数据。源代码本身不可靠,也不需要。


*) “坚不可摧”=够难在合理时间内颠覆,没有什么是100%:)

10

嗯.... 什么是使用Firefox(带或不带萤火虫)与此有关吗?

我使用IE和我可以轻松地查看您的JavaScript。与Google Chrome一样。地狱,我可以在Palm Treo上查看您的网页时下载您的JavaScript。

任何可以直接从浏览器访问的东西都可以随意下载和分析。正如其他人所说的(比我更好),在您的网站上运行的JavaScript应该被认为是“开源的”。找到另一种方式来做到这一点(即在您的服务器上进行处理),或接受有人会入侵并查看它。

请注意,你的例程显然是好的(就他们对你的网页所做的事情而言),用户将访问你的网站并立即说:“嘿,这很酷,我不知道他们是怎么做的?如果没有,请不要担心 - 大多数人不会有兴趣尝试查看JavaScript。

你可以尝试缩小你的JavaScript,但这并不是100%阻止一个确定的人。你可以尝试加密它,但我从来没有尝试过。或者在您的JavaScript文件中加入版权声明,这样至少有其他人不会像以往那样将您的作品转嫁给您,而不会陷入法律纠纷。

2

只是提供一个小窍门,我使用有助于降低人看到你的代码,

其中的窍门我这样做并不能阻止的JavaScript由experianced开发者或黑客被人发现的,但阻止少数人与萤火虫/检查打,

使用jQuery或用篦选择

通话的第二端口的另一LIB是你的文件把它们放入一个加载程序文件EG

个Loader.js

(function($){ 
    function loader(type, addr){ 
     var head = $("head")[0]; 
     switch(type){ 
      case "script":{ 
       var element = $(document.createElement("script")); 
       element.attr("type", "text/javascript"); 
       element.attr("src", addr); 
       element.attr("loaded", "loader") 
       $(head).append(element); 
      } 
      case "style":{ 
       var element = $(document.createElement("link")); 
       element.attr("rel", "stylesheet"); 
       element.attr("type", "text/css"); 
       element.attr("loaded", "loader"); 
       element.attr("href", addr); 
       $(head).append(element); 
      } 
     } 
    } 

    loader("css", "path/to/your.css"); 
    loader("script", "path/to/script.js"); 

    loader("script", "unloader.js") 
})(jQuery); 

于是开始与使用封闭该阻止任何人使用检查的控制台输入地看到,已运行的代码。

所以一旦这个文件已经通过它将加载你的CSS和JS,但你仍然可以看到加载在你的检查器的头元素,感谢浏览器和他们的方式他们的工作,你可以删除,而不是卸载它们意味着代码不会从执行删除,但会防止它们被显示在检查这是在卸载发生的事情。

unloader.js

(function($){ 
    $("head *[loaded=loader]").remove(); 
})(jQuery); 

以上将删除加载虽然Loader文件。

您需要记住的唯一事情就是将loaded="loader"添加到包含加载程序的脚本中,现在这不会让某些人看不到您的文件,但会阻止检查人员在HTML中显示它们,

解决此问题的方法可以是“查看源代码”代码,请参阅加载程序文件并阅读该代码,以确保尽量减少我使用Google Closure Compiler(http://closure-compiler.appspot.com/home)的代码

即使这并不能阻止他们只是变得更加困难。我所测试的步骤之一,但不要使用上,加载程序和文件在您加载使用的.htaccess规则,以检查他们有reffer链接形成了你的网站,这将阻止它们直接浏览到您的JS/CSS代码文件

另一个提示不要将它们存储在正常的地方,不使用通用名称EG脚本在/风格/脚本/ CSS /或style.css中

这里是那么编译装载机闭包的一个例子混淆

Loader.js

var _0xc596=["\x68\x65\x61\x64","\x73\x63\x72\x69\x70\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x74\x79\x70\x65","\x74\x65\x78\x74\x2F\x6A\x61\x76\x61\x73\x63\x72\x69\x70\x74","\x61\x74\x74\x72","\x73\x72\x63","\x6C\x6F\x61\x64\x65\x64","\x6C\x6F\x61\x64\x65\x72","\x61\x70\x70\x65\x6E\x64","\x6C\x69\x6E\x6B","\x72\x65\x6C","\x73\x74\x79\x6C\x65\x73\x68\x65\x65\x74","\x74\x65\x78\x74\x2F\x63\x73\x73","\x68\x72\x65\x66","\x73\x74\x79\x6C\x65","\x63\x73\x73","\x70\x61\x74\x68\x2F\x74\x6F\x2F\x79\x6F\x75\x72\x2E\x63\x73\x73","\x70\x61\x74\x68\x2F\x74\x6F\x2F\x73\x63\x72\x69\x70\x74\x2E\x6A\x73","\x75\x6E\x6C\x6F\x61\x64\x65\x72\x2E\x6A\x73"];(function (_0x76e5x1){function _0x76e5x2(_0x76e5x2,_0x76e5x3){var _0x76e5x4=_0x76e5x1(_0xc596[0])[0];switch(_0x76e5x2){case _0xc596[1]:var _0x76e5x5=_0x76e5x1(document[_0xc596[2]](_0xc596[1]));_0x76e5x5[_0xc596[5]](_0xc596[3],_0xc596[4]);_0x76e5x5[_0xc596[5]](_0xc596[6],_0x76e5x3);_0x76e5x5[_0xc596[5]](_0xc596[7],_0xc596[8]);_0x76e5x1(_0x76e5x4)[_0xc596[9]](_0x76e5x5);;case _0xc596[15]:_0x76e5x5=_0x76e5x1(document[_0xc596[2]](_0xc596[10]));_0x76e5x5[_0xc596[5]](_0xc596[11],_0xc596[12]);_0x76e5x5[_0xc596[5]](_0xc596[3],_0xc596[13]);_0x76e5x5[_0xc596[5]](_0xc596[7],_0xc596[8]);_0x76e5x5[_0xc596[5]](_0xc596[14],_0x76e5x3);_0x76e5x1(_0x76e5x4)[_0xc596[9]](_0x76e5x5);;} ;} ;_0x76e5x2(_0xc596[16],_0xc596[17]);_0x76e5x2(_0xc596[1],_0xc596[18]);_0x76e5x2(_0xc596[1],_0xc596[19]);})(jQuery); 

unloader.js

var _0xc2fb=["\x72\x65\x6D\x6F\x76\x65","\x68\x65\x61\x64\x20\x2A\x5B\x6C\x6F\x61\x64\x65\x64\x3D\x6C\x6F\x61\x64\x65\x72\x5D"];(function (_0x3db3x1){_0x3db3x1(_0xc2fb[1])[_0xc2fb[0]]();})(jQuery); 

重现于:http://closure-compiler.appspot.com/home代码放在下//加入您的代码在这里

,然后将其还给使用结果:http://www.javascriptobfuscator.com/Default.aspx使它甚至更难以理解。

希望这有助于任何其他人寻求使JS尽可能安全

但请记得每一个其他人说,这不会阻止亲黑客只是使它很难读懂

+0

在此之后,我决定在我的博客上发布完整指南,请查看:http://blog.123torrentz.com/2012/06/prevent-firebug-or-inspectors-from.html – HotHeadMartin 2012-06-08 13:27:41

0

我的声望太低,无法评论,但我只想指出一些我在了解window.history.pushState()后注意到的事情;看起来你可以更改地址栏中的当前内容,一旦你这样做,“查看页面源代码”不起作用。因此,如果有阻止开发人员工具工作的方法,我不知道如何查看源代码。

编辑:在使用window.history.pushState()后,当我查看开发人员工具时,它告诉我重新加载页面以查看JavaScript文件中的内容(但是它再次显示地址到JS文件所以这并没有多大帮助)

相关问题