2011-10-22 147 views
0

我有這樣的腳本,用<script>開始,以</script>有沒有辦法隱藏JavaScript代碼?

人們完成可以清楚地看到,如果他們去了網頁的源代碼。

有沒有辦法避免這種情況?我的意思是使該代碼不可見,就好像它在哪裏PHP?

+7

編號JavaScript由瀏覽器執行(而PHP由服務器執行),並且對於想要查看它的人總是可見的。你可以做的最好的是混淆你的JS。 –

+0

您可能會像Google一樣混淆,這隻會讓讀者更難以閱讀。無論如何,爲什麼要這麼做?你有很有價值的代碼? –

+2

不,但您可以將所有'私人'(或其他)功能轉移到服務器端php,然後使用Ajax(僅運行非'私人'東西客戶端)。 –

回答

4

編輯:現在你已經添加了一個評論,說你實際上試圖保護是視頻的URL(爲什麼沒有人只是說他們真正想要做在他們的問題?)。

答案是,您無法保護您在網頁中播放的視頻網址。這可以很容易地看到很多方法。任何瀏覽器調試工具都會顯示所有來自瀏覽器的網絡流量,這些流量很容易公開視頻URL。

如果你真的想要做的是防止視頻的直接鏈接,那麼你可以使用一些技術來防止大多數直接鏈接。如果您進行Google搜索以「防止直接鏈接」,您會發現很多討論此概念的文章。我見過的兩種技術是:

  1. 在服務器的視頻服務器上,檢查http referrer並只將服務器視頻提供給你喜歡的推薦人。儘管http referrer可以被確定的和受到教育的theif欺騙,但是這個簡單的步驟使大多數用戶的大多數直接鏈接不切實際。
  2. 在視頻的URL中需要某種算法參數才能成功對您的服務器進行檢查。這可以從網站上的其他內容導出,並結合了數據參考,也可以通過您的網站的每小時發佈並嵌入一個有效的託管的網頁,等等...

所有的JavaScript你任何想看到它的人都可以看到網頁。

真正隱藏算法的唯一方法是將其放在服務器上,在服務器上執行它,並將結果放入網頁中,當它由服務器呈現或使用ajax調用來檢索它時。

由於JavaScript在瀏覽器中的工作方式,代碼必須可供瀏覽器使用才能運行。如果它可用於瀏覽器,那麼任何想看到它的人都可以使用它。

有些事情可以讓人們更難以看到您的JavaScript,但這些只是阻礙某人下降或讓他們花費更多時間來了解您的代碼的障礙,但它們都可以被克服由有足夠堅持性的人來做。

您可以做的最簡單的事情就是通過運行免費流行的最小化工具(Google Closure或Yahoo最小化工具以及其他許多工具)來最小化您的代碼。這些工具的主要目標是減少JavaScript代碼的大小,但在此過程中,通過刪除縮進,換行符,將本地符號重命名爲短而毫無意義的內容等,使得它更不易讀。還有一些模糊工具故意遮蓋您的JavaScript代碼,使其更難以看清/理解。

我重複一遍。所有這些工具最終都可能被擊敗,而他們所做的大多數工作都是爲了阻止一個堅定的窺探者,這會讓他們放慢腳步。

如果你真的想要保護一個算法或商業祕密或祕密代碼或類似的東西,你必須把算法放在服務器上,並讓代碼只在服務器上執行,以便瀏覽器只能看到結果,而不是實際的代碼。如果您想要保護您的實際代碼並不重要,那麼在大多數情況下,保護您的實際代碼並不重要。商業上的成功並不是通過保守祕密來實現的,而是通過了解並通過以合適的價格滿足客戶的需求而實現的。

+0

我的猜測是,在大多數情況下,這是不可能的(比如操縱頁面上的元素)或者不是一個真正的增值主張(技術或資源的混淆並不真正有價值)。對於大多數想要這樣做的人來說,我的猜測是這兩個條件中的一個,他們甚至可能不應該打擾。 –

+0

@JaredFarrish - 我同意。這很少值得擔心。更重要的是擔心事實會讓你的事業取得成功。 – jfriend00

+1

雖然使用調試器很容易找到視頻鏈接,但某些帶付費視頻內容的網站使用的技術要求使用經過身份驗證的cookie來獲取視頻資源鏈接,然後從該鏈接播放,有些使用更復雜的方法,如將整個視頻切成許多部分,通過從視頻播放器內發送許多請求/響應來獲取視頻內容。這樣,至少像視頻下載插件不能直接緩衝或下載視頻資源。如果視頻是業務的主要部分,禁止直接或未經授權的訪問是一個值得關注的問題 – Birey

6

不,它具有普通的JavaScript,它在客戶端運行,這意味着它必須可以被運行它的用戶的瀏覽器訪問。你可以嘗試混淆你的代碼,或者像服務器端JS(V8)這樣的新技術,但是對於傳統的JavaScript,它必須運行在客戶端。

+0

謝謝!這只是一個視頻,我不想讓它熱連接... – Rosamunda

+5

@RosamundaRosamunda - 您在Firebug或Chrome中使用控制檯實現如果瀏覽器可以播放它,我可以看到您的視頻網址,對不對? –

+0

是的,但我有一個亞馬遜帳戶,我打算在鏈接上放置一個失效日期...希望有助於防止熱鏈接... – Rosamunda

1

編號PHP代碼對用戶不可見,因爲它在服務器上執行。 JavaScript代碼被髮送到用戶的計算機並在那裏運行,因此它們對他們可見。

最好的選擇是obfuscate你的代碼,使其難以閱讀。這只是一個不便之處;如果任何人關心足夠他們將能夠找出你的代碼。

1

是的,你可以用SSJS技術在服務器上執行。

退房NodeJS.org

+0

我不認爲這會有所幫助。 – Birey

+0

感謝您的寶貴意見。 – AlienWebguy

+0

感謝您考慮它的價值。 – Birey

0

JavaScript是一種客戶端腳本語言,所以它不可能從客戶端隱藏。你可以混淆它,但一些聰明的人可能會混淆它。

如果你真的想隱藏你的代碼,你可以通過AJAX調用一個PHP腳本,雖然這可能是服務器很重。

相關問題