所以,我有一個混合的遊戲應用程序,我有一個獎勵制度,在我的遊戲:Javascript |如何避免Date.now()操作
if(Date.now() - lastFreeCoinsTime > 3600000){ //lastFreeCoinsTime is also Date.now()
giveCoins();
lastFreeCoinsTime = Date.now();
}
每隔一小時就可以得到金幣的X量。 我發現它可以很容易地通過執行以下操作: 電話設置:更改日期(例如18/03 - > 23/03) 現在您可以再次獲得獎勵。 我該如何避免它?
在服務器上使用'redis'來存儲用戶是否已經收到獎勵並設置1小時過期到該密鑰;從服務器而不是客戶端獲得時間;將先前的獎勵時間存儲在localStorage/sessionStorage/cookies中,並確保Date.now()不小於前一次;不要讓作弊者玩你的遊戲;-) –
檢查一個獨立的來源,用戶不能篡改。 – RobG
相關「獲取當前GMT世界時間 」:http://stackoverflow.com/questions/489581/getting-the-current-gmt-world-time –