博客
关于我
(转)深入理解Flash Player的安全域(Security Domains)
阅读量:802 次
发布时间:2023-04-16

本文共 2294 字,大约阅读时间需要 7 分钟。

Flash Player安全域详解

Flash Player的安全域机制是用于限制SWF文件对系统资源的访问权限,以确保代码的安全性。本文将详细介绍安全域的相关知识,帮助开发者更好地理解和管理Flash Player的安全设置。

概念简介

安全域(Security Domain)是Flash Player中的核心安全机制,它决定了一个SWF文件能够访问哪些资源。默认情况下,Flash Player会根据文件的来源域名划分安全域,这样不同来源的文件运行在独立的沙箱中,互不干扰。

沙箱(Sandboxing)

沙箱是一种 isolate different data and program execution 的技术,在Flash Player中,沙箱通过安全域来实现。每个安全域都有自己的沙箱,确保不同来源的内容无法互相访问或操作。沙箱不仅用于安全,还可以用于避免命名冲突,例如Flash Player中的应用域(Application Domain)就是通过沙箱来区分不同代码的运行环境。

安全域(Security Domains)

安全域是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文件加载当前域下的内容。

信任授权(Trust)

在Flash Player中,信任授权是允许不同安全域的文件进行通讯的关键机制。通过调用Security.allowDomain方法,可以指定允许访问的域名。例如:

Security.allowDomain("home.example.com");

这样,来自home.example.com的文件可以访问当前安全域中的内容。需要注意的是,信任授权是单向的,子文件无法反向访问父文件,除非父文件也进行了信任授权。

使用通配符的危险性

使用Security.allowDomain("*")会允许所有域的SWF文件访问当前安全域,这种做法非常危险,因为它可能导致敏感数据被恶意代码获取。因此,应谨慎使用,并确保只允许需要访问的域名。

SWF之间的通讯

在某些情况下,需要在不同安全域的SWF文件之间进行通讯,而不完全依赖信任授权。Flash Player提供了LoaderInfo对象的sharedEvents属性,允许在不同安全域中通过共享事件进行数据传递。

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/

你可能感兴趣的文章
MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
查看>>
MySQL不同字符集及排序规则详解:业务场景下的最佳选
查看>>
Mysql不同官方版本对比
查看>>
MySQL与Informix数据库中的同义表创建:深入解析与比较
查看>>
mysql与mem_细说 MySQL 之 MEM_ROOT
查看>>
MySQL与Oracle的数据迁移注意事项,另附转换工具链接
查看>>
mysql丢失更新问题
查看>>
MySQL两千万数据优化&迁移
查看>>
MySql中 delimiter 详解
查看>>
MYSQL中 find_in_set() 函数用法详解
查看>>
MySQL中auto_increment有什么作用?(IT枫斗者)
查看>>
MySQL中B+Tree索引原理
查看>>
mysql中cast() 和convert()的用法讲解
查看>>
mysql中datetime与timestamp类型有什么区别
查看>>
MySQL中DQL语言的执行顺序
查看>>
mysql中floor函数的作用是什么?
查看>>
MySQL中group by 与 order by 一起使用排序问题
查看>>
mysql中having的用法
查看>>
MySQL中interactive_timeout和wait_timeout的区别
查看>>
mysql中int、bigint、smallint 和 tinyint的区别、char和varchar的区别详细介绍
查看>>