2017-04-02 49 views
-1

我在寫遊戲客戶端/服務器。我使用Artemis-odb和Netty來處理實體和網絡。每個註冊的播放器都會從數據庫中分配一個自動增量ID。此ID與每個客戶端/服務器事件相關聯。如何防止遊戲客戶端發送假玩家ID?

我想阻止客戶輕易ID欺騙來阻止帳戶劫持。理論上,防止這種情況的最佳做法是什麼?

遊戲/客戶端不使用UUID,但可以,如果這是最好的選擇。

謝謝!

+1

不要只使用ID來識別玩家?有很多選項,您可以生成令牌,跟蹤播放器的IP/MAC地址,... – UnholySheep

+0

謝謝!這些都是我沒有考慮過的出色想法。我知道這個帖子對投票給我的人來說似乎微不足道,但我對網絡編程並不熟悉,這些信息在Netty文檔中沒有討論。這很糟糕,我希望能成爲這個網站上所有內容的專家,並且只會提出一些極其引人深思的問題。我希望那些認爲這個問題的人不值得認識到,他們曾經也是初學者。對不起,咆哮過來。我真誠地感謝你的幫助。那意義重大。 – unenergizer

回答

1

播放器ID應該與服務器上該播放器的網絡連接上下文(如果您使用的是TCP或IP:PORT對的套接字)相關聯。

客戶端應該永遠不需要將ID發回服務器,因爲服務器應該知道該ID是什麼。只要服務器可以將傳入的網絡數據包與播放器的上下文關聯起來,就沒有欺騙的實際風險,但我認爲UDP的風險可能會高一些。但是,只要您在數據包中包含序列號,實際的漏洞也就不太可能了。

我知道沒有主要的網絡遊戲實際上使用完整的UUID作爲客戶端 - 服務器協議中的播放器標識符。

+0

謝謝!我仍然在學習,我還沒有在Netty文檔中找到這些信息。我只知道永遠不會相信客戶,這就是爲什麼我想問問那些比我更有經驗的人。真誠的,謝謝。 – unenergizer