我正在創建一個遊戲網站,當玩家完成遊戲時,我希望網站將分數更新到數據庫。現在我唯一的問題是,玩家可以通過在瀏覽器中使用JavaScript方法/代碼輕鬆地欺騙他們的分數。我怎樣才能做到這一點?如何防止用戶在JavaScript遊戲上非法獲得更高的分數?
回答
玩家可以通過在瀏覽器中使用javascript方法/代碼輕鬆地欺騙自己的分數。
混淆:如果你的目標是防止它發生容易,您可以obfuscate JavaScript代碼。 編輯:閱讀@mickmackusa's link後,IIFE
是一種快速實現你要找的東西的方法。
簽名:如果您的目標是防止它發生,您應該考慮使用verifiable signature or hash。這個應用的JS越重,這個越難。例如,如果簽名是通過純JavaScript生成的客戶端,則代碼爲would still leak everything an attacker would need to fake the signature。公認的設計是將私有組件服務器端移動到可以受保護的位置。
混淆是非常有效的,只要反混淆的負擔遠遠大於攻擊者找出的獎勵(或風險)。
所有我需要確保的是,分數發送到數據庫是正確的分數 – blendy
儘量減少問題發生的方式不會影響最終解決方案。如果您需要保證真實性,請使用可驗證的不可更改的方法。如果你想過濾掉99%的黑客,使代碼變得混亂,甚至在你研究它後如何發送給後端,你也不明白。 – tresf
假設問題主要發生在記分牌上的人詢問他們的姓名時,您也可以選擇爲數據庫中的每個分數使用唯一的ID,然後讓最終屏幕要求名稱簡單修改該記錄。這仍然不是萬無一失的,我建議你在會話中存儲某種形式的時間戳,以便有人不會將數據庫擦乾淨。但它仍然是一個糟糕的設計。如果你想保護它,你需要使用安全可靠的數據簽名方法。 – tresf
- 1. 如何在遊戲中心的所有用戶中獲得最高得分手?
- 2. 防止作弊JavaScript的遊戲
- 3. 如何防止網頁遊戲作弊?
- 4. 用javascript顯示遊戲得分div
- 5. 遊戲中心:如何獲取用戶的分數?
- 6. Android遊戲:高分
- 7. 當玩家獲得5分時,無法弄清楚如何讓遊戲停止。
- 8. 在iOS上保存用戶遊戲得分
- 9. JavaScript的突圍遊戲。在得分區間更改球速度
- 10. 如何防止遊戲客戶端發送假玩家ID?
- 11. 如何防止遊戲客戶端版本欺騙?
- 12. Javascript遊戲黑客預防
- 13. Unity遊戲得分
- 14. 遊戲中的C#高分
- 15. MySQL的:獲得最高分數用戶
- 16. 防止用戶對html5老虎機遊戲的干擾
- 17. 如何防止用戶在3D遊戲中繞過交通車輛
- 18. 通過谷歌遊戲Api獲得高分
- 19. 如何在首頁上更改我的JavaScript遊戲的位置
- 20. 如何在非遊戲應用
- 21. 如何獲得捕獲刷卡動作上mobilephone我的遊戲
- 22. 防止AJAX作弊的網頁遊戲
- 23. 阻止非JavaScript用戶的防水方法
- 24. Android遊戲高分實現
- 25. 高分系統iphone遊戲
- 26. 我的遊戲在線高分
- 27. 如何爲我的遊戲獲得更好的計時事件?
- 28. 如何獲得XNA 4.0遊戲在其他機器上運行?
- 29. 不登錄遊戲中心的用戶的高分策略
- 30. 如何在XNA遊戲中獲得IBeam遊標?
那麼你應該在將它放入數據庫之前對它進行清理...... –
遊戲結束後立即將遊戲成績存儲在PHP變量中。無論存儲在JavaScript中什麼都可以忽略。 –
[阻止Javascript遊戲調整/黑客]的可能重複(http://stackoverflow.com/questions/6320996/prevent-javascript-games-tweaking-hacking) – mickmackusa