2010-06-01 103 views
0

我已經使用JavaScript編寫了一個基本遊戲,並且正在爲它設計一個高分系統,但是由於它是用JavaScript編碼的,我們都知道打開Firebug或Chrome的開發工具非常容易,編輯代碼。例如添加乘數到分數。測試JavaScript是否已被修改

有誰知道任 A)的方式來檢查的JavaScript沒有被修改和/或 B)張貼分數

回答

4

沒有什麼可以做一個安全的方式。腳本本身將負責檢查,所以不可信任。

一般來說,人們決定要麼a)不夠注意,如果出現明顯的高分,應該刪除明顯的虛假高分; b)在提交之前登錄服務器端用戶在頁面上的時間,看看它是否合理,或者c)採取記錄所有遊戲動作,發送這些動作以及在服務器上重放遊戲(可能與選項B組合)的更艱難的路徑。

然而,那些保護在一個非常基本的水平。在某種程度上,你所能做的只是讓你不值得一邊攻擊你;你永遠無法完全防止它。

+0

+1對這個問題的一個很好的總結... – 2010-06-01 15:55:39

+0

+1及接受的答案 - 一個很好的總結,類似我的想法,我正在B的連擊+一個小C(更新服務器端的每10秒評分一次,看看是否有可能知道每秒的最大「分數」) – 2010-06-01 17:22:31

+0

忘了提及我還包括一個md5哈希來驗證,其中哈希是在混淆的JavaScript生成(只是爲了添加另一層)。 – 2010-06-01 17:24:05

2

如果可行,您可以跟蹤遊戲中發生的事件,然後將它們與分數一起發送回服務器進行驗證。如果所有「事件」的分數與您收到的分數不匹配,那麼您知道這是無效的。如果你真的希望你甚至可以發送事件發生,並定期驗證分數。

或者,您甚至可以使用服務器來計算得分,並從JavaScript中刪除該邏輯。但客戶仍然可以對發送給您的「事件」進行欺騙。

當然,這並不會使您的應用程序真正安全,只會更難打破。

+0

+1,我打算給出類似的建議,可能在每個事件和服務器端檢查時間戳上查看時間戳差異是否現實。正如你所說,但沒有什麼是確定的,JavaScript對於這些事情並不理想。 – 2010-06-01 15:59:22