2012-05-25 40 views
1

好的,我正在使用JavaScript和HTML5創建遊戲。諸如map,x,y,level,exp等變量存儲在JavaScript中以保持跟蹤。在我的客戶端頁面上,JavaScript變量被存儲以與遊戲一起玩。每5秒鐘,客戶端頁面發送一個POST AJAX調用到MySQL數據庫,併成功更新它。保護客戶端 - >數據庫遊戲

但是,用戶可以輕鬆修改JavaScript變量並在遊戲中作弊。然後,一旦他們編輯了JavaScript變量,POST就抓住並更新它,即使他們不合理地編輯它。

那麼,如何防止這種情況發生?

+0

投票移動此問題到[程序員SE](http://programmers.stackexchange.com)。 – jmort253

回答

3

不幸的是,沒有辦法阻止惡意方面操縱客戶端代碼。但是,在很多情況下,某些行爲可能會發出可能的濫用信號。例如,如果我可以通過治療藥水恢復的最大生命值是100點,而用戶突然增加1000,那麼你知道存在濫用。您的策略應該包括在您的代碼中進行檢查作爲驗證,以確保返回到您的應用程序的數據是有意義的。

這個概念很像商業應用程序開發人員可能會做的,以確保輸入到Web表單中的數據得到驗證。如果某些值不合法或不應提交,服務器會迴應一條錯誤消息,並指示需要填寫哪些字段。

就你而言,某人可能仍然有可能在低於特定閾值的水平上「遊戲系統」。從小處開始,在分析數據時,您會發現更多可以實現這種數據驗證的區域。

2

你將不得不監視和分析服務器端的數據 - 也許做一些理智的檢查,例如確保數值不超出範圍,或者他們只是改變一些合理的數值。你的問題的問題是,你不能阻止用戶做他們想做的事情,你只需要處理他們給你的東西。

+1

大聲笑我想說的是「理智檢查」,但用不同的單詞:)你的答案達到了「你不能阻止用戶做他們想做的事情,你只需要處理他們給你的東西。」 +1 – jmort253

+2

@ jmort253:確實 - 網絡編程的悲哀和困難的真相。 –

+0

我假設這就是爲什麼人們不喜歡用數據庫製作JavaScript遊戲? – nn2