我的主SWF文件加载了许多外部SWF文件。但是,这些外部SWF文件只是位于Web服务器的公用文件夹中。
是否可以将SWF可见性限制为仅我的主SWF文件(加载外部SWF的文件)。在当前状态下,任何知道查看位置的用户都可以输入URL并进入SWF,更不用说不遵循robots.txt的流氓机器人了。
原因很简单。用户使用用户名/密码登录主Flash应用程序,主Flash应用程序依次加载SWF文件,然后只有用户可以使用它们。此外,根据登录用户的身份,某些SWF文件受到限制且未加载。
感谢您的帮助!
答案 0 :(得分:1)
这取决于闪存的身份验证方式。 Flash需要使用带有数据库的服务器端应用程序进行身份验证。然后,服务器端应用程序可以使用数据库基于每个文件执行访问控制。
应该按表跟踪所有files
,包含文件的本地path
以及user_group
或user_id
等列。经过身份验证的会话应在用用户名和密码登录后跟踪user_id
。
攻击蜘蛛通常会对你使用robots.txt,如果你将这些文件路径放在你的robots.txt中,你最好将它们拉上并将它们交给攻击者。
对Flash应用程序进行反编译并对其进行修改非常容易。不要依赖“客户端”安全系统,它们很容易绕过。攻击者还可以使用tamperdata重放和修改HTTP请求。您需要一台服务器来告诉客户端它可以访问哪些文件。
答案 1 :(得分:0)
根据您想要的安全程度,我可以考虑几个选项:
用于控制子swfs交付的服务器端脚本(如Pekka上面所建议的那样)。
如果想要做客户端的所有事情,你可以在每个子swf中进行一次条件测试,这样它们只会在你的主要swf中播放:
类似于if(this.parent.toString() != "mainSwf") { stop();}
(伪代码)。
当然,这不是万无一失的,因为有人可以很容易地创建自己的名为“mainSwf”的父级,但这会阻止随意浏览你的子swf。至少在某人反编译之前......
您可以通过在主swf中设置属性(例如var myKey:String="362574036704ry3f0y3432607"
)来稍微加倍,然后使用条件来测试它:if(this.parent.myKey != "362574036704ry3f0y3432607") { stop();}
。
编辑:
还有一个类似的问题here,可能有用的答案。