想象一下,一个玩家的游戏,它由多个测试组成。在完成所有测试后,玩家可以选择将结果上传到服务器 - 获得最佳结果的玩家将赢得大奖。服务器需要能够验证结果数据,以确定它是否被黑客入侵,甚至是垃圾邮件。有关如何强大实施的想法?安全的数据加密和验证
回答
基本上你不行。甚至没有加密,代码混淆或其他任何东西。 “永远不要相信客户”!
确保不涉及操纵的唯一方法是让服务器上的每一点游戏逻辑都暴露给用户。然后,您可以将玩家发出的命令(击键,按钮点击等)发送到服务器,在那里验证它们(即使这并不那么容易!),处理所有必要的游戏逻辑并发回结果。
如果您的游戏涉及与时间相关的任何事情,当然这是不可行的,因为对于每个玩家的行动,都会有一个延迟,直到玩家获得结果并看到效果。
对于大多数游戏来说,所有这些都是矫枉过正,你只是确保它们很难操纵。
反黑客工具可以无休止地复杂化服务器和客户端之间的通信,混淆内存和例程,每次运行时都会自行修改,等等。
问题是,大多数反黑客工具经常被黑客攻击,如果奖品足够大,你的攻击可能也会如此。即使rootkit也可以扎根。更不用说这种行为看起来像病毒一样,它会引发警钟,并可能最终导致许多沮丧的前客户。
如果是像iPhone这样的围墙花园,我相信有一些工具可以确保手机没有越狱,我不确定它们是否会被愚弄,但是这仍然会导致任何人都可以解码通信的问题并从完全上传自己的东西。
好的,但如果我们要务实,并且设定我们的目标是简单地阻止适度的黑客(意识到任何拥有足够工具和专业知识的人将不可避免地绕过任何安全措施),那么如何继续? – smokeAndMirrors 2011-03-20 14:54:52
一个约束是保存的结果不能完全加密 - 游戏需要能够加载它们。我可能会追加一个任意长度和格式的数据块。某种类型的关键字,用于标识结果中的数据,并由特定用户在特定日期使用结果中所述的参数有效生成。 – smokeAndMirrors 2011-03-20 15:03:46
- 1. Django SMTP和安全密码验证
- 2. Lisp数据安全/验证
- 3. 使用SQL-CLR函数验证SQL Server中的加密数据的安全
- 4. 春季安全数据库身份验证瓦特/休眠和哈希密码?
- 5. JSON安全和加密
- 6. Symfony安全验证
- 7. SPRING MVC数据和密码验证
- 8. 良好和安全的表单验证
- 9. 证书,加密和身份验证
- 10. 使用加密函数在mysql数据库中加密安全密码
- 11. 验证码加密
- 12. Firebase身份验证和数据库加密
- 13. PHP表单验证和XSS安全
- 14. Facebook连接 - 身份验证和安全
- 15. 长身份验证会话和安全
- 16. 身份验证和授权 - 新安全
- 17. SproutCore安全和身份验证问题
- 18. 身份验证和安全回送API
- 19. 数据库密码安全,用php加密确实有区别?
- 20. Excel加密的安全性
- 21. Yii2:安全验证条件
- 22. CodeIgniter验证安全模型
- 23. 安全LDAP身份验证
- 24. 安全API身份验证
- 25. 春季安全ldap验证
- 26. 安全验证了RMI
- 27. 验证使用JSON Web Encryption(JWE)加密的安全令牌的颁发者?
- 28. 安全问题 - 允许没有密码的授权验证
- 29. 在不安全的密码更改中验证逻辑
- 30. WCF netTcpBinding Windows安全加密和签名
详细说明为什么它不起作用,除非游戏运行在服务器端:如果您让应用程序能够将可信数据发送回服务器,然后将应用程序交给玩家,玩家能够将可信数据发送回服务器。所以,你通过授权他们向你发送信任的数据来打击不信任的玩家,这显然是行不通的。 – 2011-03-18 17:37:08
+1“永远不要相信客户”! – MByD 2011-03-19 02:55:59