2011-04-13 144 views
1

我正在寫一個簡單的在線多人遊戲。它涉及發送一些http請求(我不介意使用任何其他protcool),以存儲關於遊戲的統計信息。我如何確保只使用我的客戶端客戶端向我的服務器發出請求?

問題是,遊戲是P2P,然後統計數據發送到我的服務器,所以這使得它可以通過發送虛假統計作弊。我意識到它不可能免於欺騙客戶,所以最好的辦法是儘量減少發生這種情況的可能性。在服務器和客戶端之間協商唯一的安全密鑰以確保請求是真實的?

我知道,幾乎所有的專有協議遲早都會被反向設計,但我想如果我稍微耗費時間來生成密鑰,那麼這個努力就不值得在愚蠢的遊戲中作弊。

或者是否有更好的方法來做到這一點?

回答

4

這一切都取決於統計類型。如果每個客戶端都可以提交關於其他客戶端的部分統計信息以及完整的統計信息,那麼您可以編寫一個服務器端驗證機制來檢測差異 - 這需要多個客戶端的協調努力才能通過。

當你設計這樣的機制,應該從騙子已經完全進入到客戶端的源代碼假設工作服務器 - 並仍然不能由單一的旁路機制騙子。如果由此產生的機制不可用(通常由於效率原因),您可以開始交易安全性以提高效率 - 但請注意您的交易是什麼,以及作弊者能夠使用哪些方法。嘗試記錄足夠的數據,您可以通過非實時分析日誌來檢測此類作弊行爲,在之後捕獲作弊者事實上是接下來他接下來最好的事情的行爲。

+0

雖然這種方法在* everyone *作弊時不起作用,但它仍然是一個有趣的想法。感謝啓發! – Philip 2011-04-13 08:34:44

相關問題