2012-01-01 52 views
0

如果有人在瀏覽器中打開我的.js或.css文件之一,是否可以顯示不同的內容?我將Apache配置爲在.js和.css文件中執行PHP代碼。如何檢測文件是由網頁請求還是由用戶直接查看?如何使用PHP「隱藏」我的Javascript和CSS文件?

編輯:我知道有沒有辦法隱藏我的文件100%。我正在尋找阻止人們複製我的代碼的最佳方式。

+4

你不能。最好你能做的是[obfuscate](http://stackoverflow.com/questions/194397/how-can-i-obfuscate-javascript)和[minify](http://en.wikipedia.org/wiki/Minification_(編程))。 – 2012-01-01 05:17:07

+3

這是又一例「你不能給別人提供信息而不給他們提供信息」 – Ben 2012-01-01 05:24:23

回答

7

在瀏覽器中工作的任何東西都可以真正隱藏起來。瀏覽器只是一個請求該文件的代理,與請求該文件用於任何用途的代理相同。服務器知道瀏覽器下載作爲網頁一部分的JS文件和下載JS文件以查看它的用戶之間沒有區別。對於服務器來說,它們只是下載文件的請求。服務器不知道將要做什麼。更進一步說,JS文件和CSS文件通常保存在磁盤緩存中(出於性能方面的原因),它們可以獨立於服務器進行檢索。

你唯一能做的就是用縮小和混淆來掩蓋你的代碼。縮小意義是有道理的,因爲它也使事情變得更有效率。我個人不會推薦混淆,因爲它並不能真正阻止一個堅定的觀衆 - 它只會讓他們稍微放慢腳步。如果瀏覽器可以理解JS文件來運行它,那麼黑客也是如此。

一般來說,人們似乎認爲他們的javascript在某種程度上更重要,而不是真正的祕密。如果確實需要某種祕密算法,那麼最好的辦法就是保留服務器上的代碼,並根據需要使用ajax調用來從客戶端javascript訪問它。

+3

我認爲你的最後一段真正歸納起來。如果你不想讓人們看到它,請不要發送給他們。保持你的祕密在服務器上。 – FakeRainBrigand 2012-01-01 05:44:11

+2

+1。除了最後一段,我認爲有些人對自己的代碼有多麼好的感覺,就像有成千上萬的人在排隊拷貝它一樣。 (我不是故意暗示OP是這樣一個人;我認爲這是所有Web開發人員在某個時候都會問的問題。) – nnnnnn 2012-01-01 06:44:16

0

您可以檢測用戶是否直接通過檢查HTTP Referrer頭來調用該文件。 但它不會阻止用戶檢查Firebug或等效工具來查看腳本的來源。

+0

或者只是根據需要設置引用者標頭 - 這是任何確定的黑客可以做的事情(儘管它更簡單從磁盤緩存中獲取)或者將其捕獲到網絡流量分析器中。無法允許瀏覽器訪問並且不允許人員訪問。 – jfriend00 2012-01-01 05:33:04

相關問題