2010-05-20 55 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文件所以這並沒有多大幫助)

相關問題