2012-06-26 40 views
5

我需要我的Flash客户端安全地与服务器通信(通过二进制套接字)。为此,我正在考虑在AS3代码中嵌入一个预共享密钥,并通过自定义协议交换XOR数据。保护Flash AS3代码+与服务器的安全通信

我被告知,SWF反编译器在使所有嵌入式代码清晰可见和可读性方面做得很好。这是否意味着我不能真正隐藏我的钥匙?

如果这种方法不切实际,还有什么其他选择?我试过as3crypto,只是发现它充满缺点,缺乏严肃的文档。

+0

我相信你会得到最好的结果是使用SSL作为传输数据的安全协议。注意,这仍然不能阻止用户设置接受您的证书的代理,然后向客户端发送另一个代理来解码传输,因此它绝不是完全的证明,但它是客户端/服务器最安全的解决方案沟通至少会阻碍黑客入侵系统的能力。这将保持您的最终用户/服务器通信不受外界的干扰,但不会保护您免受最终用户的侵害。 – shaunhusain

+0

由于下面的答案隐藏在中间,客户端和服务器之间的通信捕获将最终允许有人写一个客户端,产生与在mim监视期间看到的相同类型的通信。看看Kinect如何被黑客攻击作为例子,该协议并未公布,也没有启动数据流的信号,但是之后有一个USB加密狗和一个数据转储,并且你在巴西有一些人对数据进行逆向工程小于24小时。另一个例子该隐和Able在这里http://www.youtube.com/watch?v=ZNApxghIQLw – shaunhusain

+0

总的观点是服务器不应该信任从外部进入它的通信完全。唯一可以确保安全的是在服务器上执行的代码,确保保持安全的最佳方式是让服务器处于物理安全位置,并且不会挂钩到任何不必要的网络中。祝你好运...好的问题,只是没有好的答案。 – shaunhusain

回答

4

你根本无法隐藏你的密钥--SWF是完全不可信的,可以很容易地反编译。使用SWF处理安全性非常困难,因为它们在客户端运行并且不受信任。

它可能具体取决于您尝试使用安全通信完成的操作。例如,如果您试图确保高分数系统几乎不可能,因为游戏在客户端(SWF)上运行,并且他们可以操纵它来向服务器吐出他们想要的任何分数。这里有一个很好的解读:What is the best way to stop people hacking the PHP-based highscore table of a Flash game

如果您只能将SWF用作前端UI,并且所有逻辑都发生在后端,那么您可以保护您的应用程序(使用上面的高分例子,如果游戏不是AS3游戏,而是真正在服务器上运行,那么保护起来会容易得多,因为后端是可信的,不能被用户修改或查看),但是如果逻辑发生在SWF上那么你几乎没有运气。