2010-03-07 74 views
5

我有一种情况,我的主SWF文件加载了许多外部SWF文件。但是,这些外部SWF文件只是坐在Web服务器的公用文件夹中。限制SWF文件的可见性

是否有可能到SWF的可见性限制只有我的主SWF文件(加载外部主权财富基金之一)。在当前状态下,任何知道在哪里寻找的用户都可以输入URL并获得SWF,更不用说不遵循robots.txt的流氓机器人。

这样做的原因很简单。用户使用用户名/密码登录主Flash应用程序,主Flash应用程序依次加载SWF文件,然后才可以向用户提供。另外,根据登录用户的身份,某些SWF文件是受限制的并且未加载。

感谢您的帮助!

+1

我对Flash并不熟悉,所以我不知道Flash有哪些特定的可能性,但可以通过使用服务器端语言(如PHP或ASP)进行登录来解决。登录会创建一个会话,而有效的会话将成为后续文件交付的条件。 – 2010-03-07 15:05:14

+0

谢谢Pekka。我非常喜欢这个想法,但是我非常确定Flash只能通过请求一个URL(SWF无法传递*到它)来加载外部资源(包括SWF)。如果属实,Flash将无法通过任何方式访问SWF。 – helloworlder 2010-03-08 06:03:43

+0

刚刚又有了一个念头。难道不可以通过修改.htacess来阻止列出目录吗?所以它不能列出,但如果你知道确切的名字,你仍然可以打开文件。也许可以通过在文件名末尾添加一个散列来使名字变得不可能*。 *几乎不可能 – helloworlder 2010-03-08 10:53:10

回答

1

这取决于flash是如何验证的。 Flash需要使用数据库与服务器端应用程序进行身份验证。然后,服务器端应用程序可以使用数据库在每个文件的基础上执行访问控制。

所有files应该由表进行跟踪,包含列如本地path到文件以及user_group或者一个user_id。经过身份验证的会话应在用用户名和密码登录后跟踪user_id

是很常见的攻击蜘蛛使用robots.txt的对付你,如果你把这些文件路径在robots.txt你最好只是压缩他们,并让他们给攻击者。

这是很容易反编译Flash应用程序并进行修改。不要依赖“客户端”安全系统,他们很容易绕过。攻击者也可以使用tamperdata来重放和修改HTTP请求。你需要一台服务器来告诉客户它可以访问哪些文件。

+0

嗨,谢谢你的回复!我正在考虑使用这样的方法,但问题是如果外部SWF位于受保护的目录中,即不能公开可见,那么Flash将无法加载它们,对吗? 我认为主要问题是您无法将SWF对象传递到Flash应用程序。只有Flash应用程序可以通过引用实际URL来加载SWF对象。 所以也许这是不可能的? :-( – helloworlder 2010-03-08 05:14:01

+0

嗯,我想如果这是不可能的,我将不得不采取某种妥协方式。有关SWF的版权问题稍微复杂一点,但这是业务需求的性质 如果这是安全性妥协,那么我有以便让我的客户清楚,可用性妥协可能是另一种方式,也许我可以将它转变为AIR桌面应用程序,用户将登录到Web应用程序并查看可供下载的“属于”它们的SWF。他们将这些SWF文件从服务器下载到他们的计算机上,以便AIR应用程序可以访问这些文件。 – helloworlder 2010-03-08 05:53:08

0

根据您想如何安全的是,我能想到几个选项:

  1. 的服务器端脚本来控制你的子主权财富基金的交付(如佩卡已经在上面的建议)。

  2. 如果想要做的一切客户端,你可以把一个条件测试每个子SWF中,所以他们只会从你的主SWF播放里面:

喜欢的东西if(this.parent.toString() != "mainSwf") { stop();}(伪代码)。

当然,这也不是万无一失,因为人可以很容易地命名为“mainSwf”自己的父母,但它会阻止你的子主权财富基金的随意浏览。至少直到有人反编译它们...

通过在主SWF中设置一个属性(如var myKey:String="362574036704ry3f0y3432607"),然后使用您的条件测试它:if(this.parent.myKey != "362574036704ry3f0y3432607") { stop();},可以使事情变得更加困难。

窗台不是非常安全的,虽然。希望这可以帮助。


编辑:

也有一个类似的问题here,这可能有用的答案。

+0

-1您不能在SO上提出漏洞,特别是如果您知道其漏洞。反编译闪存或使用tamperdata重播GET请求可绕过客户端安全系统。 – rook 2010-03-07 18:01:32

+0

@ The Rook:呵呵,我一定会更仔细地阅读常见问题下次!但是,请让我知道您如何看待GET嗅探正在破解这种方法。是的,有时服务器端解决方案由于其他原因是不可能的......猜测我们生活在一个不完美的世界。 :) – 2010-03-08 09:22:17