是否将未经缓冲的数据从Flash应用程序传递到服务器?
我正在寻找在运行Flash的客户端和服务器之间传递数据的安全方法。有问题的数据将由Flash应用程序生成,在本例中,它是您完成游戏后的分数。我想验证服务器上的数据是否未被屏蔽。有什么好方法可以做到这一点 一种简单的方法是对数据执行一些操作,例如散列,然后将散列与数据一起传递回服务器。然而,有权访问客户机源代码的人很容易破坏这一点是否将未经缓冲的数据从Flash应用程序传递到服务器?,flash,security,encryption,Flash,Security,Encryption,我正在寻找在运行Flash的客户端和服务器之间传递数据的安全方法。有问题的数据将由Flash应用程序生成,在本例中,它是您完成游戏后的分数。我想验证服务器上的数据是否未被屏蔽。有什么好方法可以做到这一点 一种简单的方法是对数据执行一些操作,例如散列,然后将散列与数据一起传递回服务器。然而,有权访问客户机源代码的人很容易破坏这一点 编辑:我意识到没有什么东西是不可压缩的,但我想让它尽可能地困难@我认为,jcnnghm的解决方案是使用公钥加密数据,并可以选择使用游戏日志进行健全性检查和/或重新计算。
编辑:我意识到没有什么东西是不可压缩的,但我想让它尽可能地困难@我认为,jcnnghm的解决方案是使用公钥加密数据,并可以选择使用游戏日志进行健全性检查和/或重新计算。SSL加密也是一个好主意,因为这使得破译实际发送回服务器的内容变得更加困难。只要人们能够获取可执行文件——除非你想在锁定的信息亭上运行游戏,否则永远都是这样——没有完全安全的方法可以做到这一点
音乐和电影行业在数字版权管理上花费了数千万美元,在几天/几周内就被家庭爱好者破解了。如果他们不能保护自己的东西…在不可信的平台上运行的代码能保持其完整性吗?不,几十年来的破坏性拷贝保护方案让我认为这是不可能的。在受信任的沙箱中运行反向恶意代码是可行的,但解决问题的最佳方法是让人们不方便作弊。使用存储在二进制文件中的公钥加密数据。这将提高攻击的进入壁垒。除此之外,在数据到达服务器时检查数据是否正常。这可以简单到计算每个游戏时间单位实际可以获得的最大点数,或者将游戏日志传输回服务器以确保得分正确 无论你做什么,没有什么是完全防黑客的,但这将阻止一切,但最坚定的
更新:@mark:Flash本机支持SSL。请访问查看AS3Crypto包。我还没有尝试过,但是这个包声称(部分)支持TLS1.0协议 TLS将在Flash应用程序和服务器之间提供一个安全通道。 @jcnnghm
通常情况下,您不希望使用公钥加密(RSA、DSA)进行批量数据加密,因为其“计算时间长”。在安全协议的握手和密钥协商阶段应使用公钥加密,但批量数据加密应使用对称密码(如AES和TDES)进行处理。TLS和SSL协议就是这样工作的。我同意给出的答案,没有任何东西是防黑客的。因为一旦你可以阅读它,你就可以操作/复制它,并因此对它进行反编译 我一直计划的另一种方法是在玩家会话中生成唯一的键(包括某种时间/日期作为salt值) 然后在整个应用程序中,可能会定期提交/传输状态分数并获得新的有效密钥。如果此合成失败,则中断整个会话 这样做的缺点可能是太多的同时玩家降低了服务器的回复速度,从而导致“假超时”+让游戏服务器为DoS攻击打开 但是,当用户拥有会话时,更新“会话密钥”将需要额外的会话管理,但如果这会让作弊者工作更努力,我肯定会尝试:o) 另一方面,没有什么是防黑客的,所以不要100%相信它——不管你想出了多么聪明的解决方案 最后一个注意事项是将您的应用程序划分为模块/级别等,这样您就不会仅仅通过启动它就可以访问每一段代码 目前,我的计划是建立一个大的多层次世界,客户端/播放器将只获取附加到播放器所在部分的文件 希望这对你的想法有用