有没有办法阻止Firebug在特定网站上工作?

时间:2010-05-20 20:45:29

标签: javascript html css firefox firebug

有没有办法让Firebug在网站上根本不起作用?

15 个答案:

答案 0 :(得分:15)

如果启用Firebug后您的网站性能下降,您可能需要显示警告,要求用户将其关闭。 You can easily detect if Firebug is enabled through JavaScript

答案 1 :(得分:15)

警告:非常恶劣。永远不要使用这个代码。此外,它不会阻止有资源的人。

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,你只需要告诉他们这不是真的可能。

答案 2 :(得分:10)

嗯.... 使用Firefox(有或没有Firebug)与此有什么关系?

我使用IE浏览器,我可以轻松查看您的JavaScript。与谷歌浏览器类似。好吧,我可以在Palm Treo上查看你的网页时下载你的JavaScript。

任何可直接从浏览器访问的内容都可以在闲暇时下载和分析。正如其他人所说的(比我更好),在您的网站上运行的JavaScript应被视为“开源”。找到另一种方法(即在您的服务器上处理)或接受某人会入侵并查看它。

请注意,您的惯例是如此明显好(就他们对您的网页所做的那样),用户会访问您的网站并立即说“嘿,这很酷,我想知道他们是怎么做的?”如果没有,请不要担心 - 大多数人都不会对尝试查看您的JavaScript感兴趣。

你可以尝试缩小你的JavaScript,但这不是100%会阻止一个有决心的人。您可以尝试加密它,但我从未尝试过。或者在您的JavaScript文件中加入版权声明,因此至少其他人将无法随后将您的工作视为您的工作,而不会遇到法律问题。

答案 3 :(得分:7)

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

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

答案 4 :(得分:7)

如果您想隐藏访问者的HTML / CSS / JavaScript,那是不可能的。即使不能使用Firebug,也可以简单地查看HTML源代码。任何外部JavaScripts和样式表都可以作为纯文本文件下载。由于HTML,CSS和JavaScript是客户端技术,它们以纯文本形式下载并由Web浏览器解释,因此理论上不可能隐藏您的代码。使代码更难理解的最好方法是混淆它。请参阅Wikipedia

答案 5 :(得分:6)

您可以点击Off按钮将其停用。

或者您是否试图阻止用户运行它?如果是这样,祝你好运......

答案 6 :(得分:5)

  

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

当他们使用一个特定的调试工具轻轻拍打手指上的“黑客”时,你不会安全。尽量阻止他们使用最终的黑客工具:“查看源代码”。

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


*)“难以理解”=难以在合理的时间内颠覆,没有什么是100%:)

答案 7 :(得分:4)

您发送给客户端的任何内容,您的所有javascript,都会向您发送给它的任何人开放。那里没有你不希望别人看到的东西。没有办法阻止其他人的浏览器使用Firebug或许多其他工具来分析您的代码。您可以尝试使您的html,css和javascript 非常糟糕,这可能会降低它们的速度!有混淆程序使其难以阅读。如果你想隐藏功能,你需要在服务器上实现它。

答案 8 :(得分:4)

您可以使用Flash,Silverlight或Java开发您的网站。然后,Firebug将仅限于显示您的基本HTML。

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

答案 9 :(得分:3)

不,当然不是。如果Firebug揭示了一些必须阻止用户看到的东西,那么你正在完全错误地解决这个问题。我不是试图变得粗鲁或有辱人格,但试图阻止一个特定的程序来修复Web应用程序中的错误与一堆蒸汽一样合乎逻辑。萤火虫没有任何神奇之处;我可以通过编写一些代码来做任何事情。话虽如此,必须有一个你应该更关注的潜在问题。

答案 10 :(得分:2)

只是为了提供一个小技巧,我使用它可以帮助降低人们看到你的代码,

我这样做的一个技巧并不能阻止经验丰富的开发人员或黑客发现JavaScript,而是阻止少数人使用Firebug /督察,

使用jQuery或其他带有炉排选择器的库

第二个调用端口是您将所有文件放入加载程序文件E.G

<强> 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,但你仍然可以看到那里加载了检查器的head元素,多亏了浏览器和他们的工作方式你可以删除而不是卸载它们这意味着代码不会从执行中删除,但会阻止它们在检查器中显示,这是卸载程序中的内容。

<强> unloader.js

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

以上将删除通过加载程序加载的文件。

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

解决这个问题的方法可以是“查看源代码”代码查看加载程序文件并阅读,以确保最小化我使用Google Closure Compiler的代码(http://closure-compiler.appspot.com/home)< / p>

即使这并不能阻止他们只是让它变得更加困难。我测试过的其中一个步骤但是不使用是在加载程序和文件上你的加载使用.HTAccess规则检查他们有一个来自你的网站的reffer链接这将阻止他们直接浏览你的js / css代码文件

另一个提示不会将它们存储在正常位置,并且不在/ style /或style.css中的/ scripts / CSS中使用通用名称E.G脚本

这是一个加载器Closure Compiled然后Obfuscated

的例子

<强> 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成为安全的人

但请记住,正如其他人所说,这不会阻止专业黑客只是让阅读和理解非常困难

答案 11 :(得分:1)

没有...............

答案 12 :(得分:1)

最终,不,因为他们的机器上的浏览器(在这种情况下是firefox)可以选择运行它想要的任何javascript(例如firebug)。您无法阻止用户将其与您的网站一起运行。

答案 13 :(得分:1)

如果您想保护您的代码,可以尝试加密您的JavaScript源代码

google encrypt javascript source

答案 14 :(得分:0)

我的声誉太低而无法发表评论,但我只是想在得知window.history.pushState()之后指出一些我注意到的事情。您似乎可以更改地址栏中当前的内容,一旦您这样做,&#34;查看页面来源&#34;不起作用。因此,如果有办法阻止开发人员工具工作,我将不知道如何查看源代码。

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