2012-08-11 29 views
2

我一直在研究一些Javascript/Canvas遊戲,並試圖想出一種方法來存儲遊戲狀態和數據,這種數據的例子是高分。我需要一個系統從javascript遊戲發佈高分,但它必須很難欺騙

最簡單的方法做到這一點當然只是將高分發布到服務器並提供http請求,但這很容易被愚弄,人們可以自己創建http請求,並且瞧,你現在是冠軍。

我在問stackoverflow如果你有解決這個問題的方法。這是一個棘手的問題,因爲JavaScript代碼在客戶端計算機上運行,​​並且它是人類可讀的。

唯一可能的解決方案,或者說,威懾,我想出的是混淆使高分(甚至包括校驗和魔術常數)的JavaScript代碼,至少使系統更難遊戲。

你有什麼更好的點子嗎?

+1

什麼會阻止用戶直接編輯遊戲中的JavaScript變量? – 2012-08-11 00:49:52

+1

瘋狂的建議:你可以在遊戲過程中用一個私有的服務器端密鑰和公共客戶端密鑰在[加性同態密碼系統](https://en.wikipedia.org/wiki/Homomorphic_encryption)中添加分數,然後在提交時驗證提交的值服務器端。但即使你這樣做了,也不會阻止攻擊者重複運行你的'addPointsToScore'函數。 – apsillers 2012-08-11 00:52:03

+1

這個問題在SO上有很多問題。看例如http://stackoverflow.com/questions/7171101/prevent-cheating-on-javascript-game。我想不時重新提問是件好事,以防某些新的未知技術突然冒出來。 :) – 2012-08-11 00:53:09

回答

3

在這樣的情況下,解決方案不是保存並且不將的分數傳送到任何地方

相反,按需計算它,並且只緩存它顯示。當需要高分報告時,傳入影響分數的多個因素,並對它們進行加密。

然後,服務器將解密消息,並自行重新計算得分。