2010-05-10 84 views
11

隨着JavaScript和HTML5取代Flash的最近大肆宣傳,我想知道 - 如何保護客戶端js代碼?當然,它可以混淆它,但這隻會使它變得更難一些。另外,對於向服務器提交高分的遊戲,在將這些分數發送到服務器之前修改這些分數是不是很容易?我知道即使Flash文件可以被反編譯,但它們可以被混淆,並且閃存反編譯不像在JS中修改數據那樣容易 - 可以使用諸如Firebug的插件輕鬆完成。我想知道大家對此的看法。JavaScript中的安全/保護代碼

回答

8

在客戶端進行解析的Javascript永遠不會100%安全。有總是是找出它做什麼的方法。前幾天我甚至看到一個工具,它解壓縮包裝的JavaScript,所以你唯一可以做的就是使用「醜陋的」變量名稱(或者實際上,讓一個JavaScript打包器將你的「好」變量名稱變成簡短/醜陋/無意義的)

爲了保護遊戲結果,你必須將一些遊戲邏輯移動到服務器,以便客戶端不能發送任意結果。

總結:不要在javascript代碼中放置祕密,也不要信任來自客戶端的任何內容 - 不管它是來自表單還是生成/通過javascript提交。

+0

謝謝。即使我確實移動了一些遊戲邏輯,生成要發送到服務器的數據的算法仍然是非常開放的。另外,在採用HTML5時,這不是一個重要因素,特別是在遊戲方面?爲什麼/人們如何預測閃光燈在出路? – BlueSilver 2010-05-10 07:49:31

+1

Flash幾乎和javascript一樣不安全。在那裏有很好的動作反編譯器,即使不可能,你仍然可以嗅探發送給服務器的請求。 除此之外,許多Flash遊戲只是爲了娛樂,而不是爲了獎勵等,所以如果有人在那裏作弊或根本沒有關係。 – ThiefMaster 2010-05-10 07:54:58

+0

不好意思問這個問題,但這不是HTML5採用的一個重要因素嗎?另外,嗅探請求並不像查看源代碼那麼簡單。此外,還有Flash遊戲門戶網站可以讓你獲得高分,因此作弊行爲在那裏很重要。 – BlueSilver 2010-05-10 08:05:03

0

你說對於向服務器發送高分的遊戲來說,修改javascript和僞造請求太容易了?

除了大小寫的情況,當你在客戶端使用某種加密技術時,它是僞造這種請求的最簡單方式,甚至不會分析腳本,而是自己發送虛假請求。您可以在計算機上輕鬆查看您在服務器和瀏覽器之間發送的所有內容,進行分析和更改