2010-04-12 33 views
2

我有一些使用swfobject嵌入的Flash swf,并且我将它们传递给用户id等一些变量。我如何防止人们阅读这些变量?如果有人查看嵌入swfs的php页面的源代码,他们可以看到所有传递给flash的变量。有没有办法隐藏这些变量?还有什么其他的方式来做到这一点?我曾考虑过设置一个ExternalInterface并调用一个JavaScript函数将这些变量传递给Flash--这是否会有效地隐藏我发送的数据?当有人查看源代码时,有什么方法可以隐藏swfobject传递给Flash的变量吗?

谢谢

回答

1

你实际上不能隐藏数据。你只能让它更难找到。使用萤火虫或类似的工具,人们总会发现,因为他们可以看看你的JS做什么,以及你的应用程序发送的数据。你所能做的最好的是添加一些加密,但使用反编译器,可以很容易地从swf中提取解密机制。

如果你描述了一般问题(发送什么类型的数据以及为什么/反对你希望它保护什么),也许我可以提供更具体的想法。

编辑:这似乎是一个严重的安全漏洞给我。受限制的服务应该只允许访问正确认证的用户。 Flash客户端不应该传递其用户标识。相反,会话(如通过登录创建的)应该与用户相关联,从而允许识别。所以你的客户永远不会知道它的用户ID。它只会发送一个请求,PHP会话将允许找出这个用户ID并提供相应的数据。

+0

谢谢大部分数据是与用户做的,它是一个用户ID和组ID,它允许Flash调用一个页面(AMFPHP),该页面查询属于该用户的图像的数据库,然后从一个远程服务器。我也通过这些图像的位置的IP地址(这个IP地址是亚马逊网络服务,可能会改变,所以我不想硬编码)。我最担心的是有人可以手动(以某种方式)输入不同的用户ID并能够看到其他用户的材料。 Flash可以访问PHP会话变量来检查传递的用户id =会话用户ID吗? – undefined 2010-04-13 09:32:19

+0

Hi Back2Dos, 感谢您的回复,我使用PHP会话存储用户ID时遇到的一个问题是,Flash客户端有时会调用2个服务器,所以我需要使用类似会话群集的东西(快速解决问题的谷歌),mCaching等。我们的网络服务器位于一台主机上,另一台需要知道用户ID的服务器位于Amazon Web Services上。听起来或许最简单的做法是在用户登录时在数据库中创建“会话”记录,并让两台服务器从该记录中读取用户标识。你能否提出其他解决方案? – undefined 2010-04-26 12:38:26

相关问题