本文共 2294 字,大约阅读时间需要 7 分钟。
Flash Player的安全域机制是用于限制SWF文件对系统资源的访问权限,以确保代码的安全性。本文将详细介绍安全域的相关知识,帮助开发者更好地理解和管理Flash Player的安全设置。
安全域(Security Domain)是Flash Player中的核心安全机制,它决定了一个SWF文件能够访问哪些资源。默认情况下,Flash Player会根据文件的来源域名划分安全域,这样不同来源的文件运行在独立的沙箱中,互不干扰。
沙箱是一种 isolate different data and program execution 的技术,在Flash Player中,沙箱通过安全域来实现。每个安全域都有自己的沙箱,确保不同来源的内容无法互相访问或操作。沙箱不仅用于安全,还可以用于避免命名冲突,例如Flash Player中的应用域(Application Domain)就是通过沙箱来区分不同代码的运行环境。
安全域是Flash Player的顶级沙箱,它与内容的来源域名或加载的内容(如SWF文件)的来源域名相关联。例如,一个senocular.com下的SWF文件会运行在senocular.com的安全域中,而example.com下的SWF文件则在example.com的安全域中。不同安全域的文件在Flash Player中运行在独立的沙箱中,互不干扰。
对于不可执行文件(如图片、文本文件等),Flash Player也采用了特殊的信任机制。这些文件无法调用allowDomain方法,因此需要使用跨域策略文件(crossdomain.xml)来管理访问权限。
跨域策略文件是一个位于网站根域名下的XML文件,定义了一组允许Flash Player加载的安全网站域名。例如,以下是一个简单的跨域策略文件示例:
通过跨域策略文件,Flash Player可以允许来自指定域名下的SWF文件加载当前域下的内容。
在Flash Player中,信任授权是允许不同安全域的文件进行通讯的关键机制。通过调用Security.allowDomain方法,可以指定允许访问的域名。例如:
Security.allowDomain("home.example.com");
这样,来自home.example.com的文件可以访问当前安全域中的内容。需要注意的是,信任授权是单向的,子文件无法反向访问父文件,除非父文件也进行了信任授权。
使用Security.allowDomain("*")
会允许所有域的SWF文件访问当前安全域,这种做法非常危险,因为它可能导致敏感数据被恶意代码获取。因此,应谨慎使用,并确保只允许需要访问的域名。
在某些情况下,需要在不同安全域的SWF文件之间进行通讯,而不完全依赖信任授权。Flash Player提供了LoaderInfo对象的sharedEvents属性,允许在不同安全域中通过共享事件进行数据传递。
通过sharedEvents对象,可以在不同安全域中发送和接收事件。例如:
var shared:EventDispatcher = loader.contentLoaderInfo.sharedEvents;shared.addEventListener("customEvent", handleEvent);function handleEvent(event:CustomEvent):void { // 处理事件}
这种方式可以在不授信的情况下安全地传递数据,但需要注意事件中的引用可能包含敏感信息,需要清理相关对象。
在某些情况下,需要将来自不同域的SWF文件合并到当前安全域中。通过LoaderContext对象,可以指定安全域,并通过跨域策略文件进行授权。
var context:LoaderContext = new LoaderContext(true);context.securityDomain = Security.currentDomain;loader.load(new URLRequest(url), context);
这样加载的SWF文件会被当前安全域信任,并运行在相同的沙箱中。
在硬盘上运行的SWF文件也有自己的安全域类型,包括:
local-with-file
:本地不受信任的文件,只能访问本地数据,不能与网络通信。local-with-network
:本地不受信任的文件,只能访问网络,不能读取本地数据。local-trusted
:本地受信的文件,可以访问本地和网络。application
:用于AIR包中的应用,默认可以加载任意域的文件。remote
:网络文件,遵循安全域规则。本地文件的安全域类型通过Flash Player的设置管理器或配置文件来管理。
Flash Player的安全域机制通过沙箱和信任授权,确保了文件之间的安全隔离。本文详细介绍了安全域的概念、沙箱的作用、信任授权的机制、跨域策略文件的使用以及本地安全域的管理方法。理解这些机制对于开发和优化Flash Player应用程序至关重要。
转载地址:http://pdgfk.baihongyu.com/