`

[转]理解Flash Player 10.1和AIR 2中的安全更改

 
阅读更多

http://www.infoq.com/cn/vendorcontent/show.action?vcr=1170

 

要求

用户级别

中级

注:本文仅针对开发人员。在 Adobe Flash Player 装机方面有疑问的客户应在 Flash Player 支持中心 上进行检修。

Adobe Flash Player 10.1 和 Adobe AIR 2 提供多种新功能和增强功能,以及部分之前操作的更改。部分更改可能偶尔要求对已有内容进行更新,以符合更加严格的安全规则的要求。其他更改引入了在之前不可用或者受到安全规则限制的新能力。

请阅读下列关于 Flash Player 10.1 和 AIR 2 中与安全相关的更改。使用此列表确定您是否需要对已有内容进行更改,以使其可以在该 Flash Runtime 版本中正常工作。

可能需要行动的更改

该部分描述了需要您更新已有内容的更改。Adobe 非常谨慎地将对已有内容的干扰降到了最低限度,我们相信本文中提到的所有问题将仅对已有内容的一小部分造成影响。

重定向的 URL 截断

在部分情况下,加载 SWF、图像或声音文件后,ActionScript 可能无法看到加载文件的完整 URL。

这种限制影响 ActionScript 3 属性 LoaderInfo.url 和 Sound.url,以及 ActionScript 1 / ActionScript 2 属性 MovieClip._url。当无法显示完整的 URL 时,这些属性将仅显示 URL 的域名部分;如,http://www.example.com/path/my.swf 将被截断为 http://www.example.com/。ActionScript 3 代码可以通过引用名为 LoaderInfo.isURLInaccessible 和 Sound.isURLInaccessible 的新 Boolean 属性检测到截断。在 AS1/AS2 中无 API 可以显示截断。

仅当全部满足下列三个条件时 URL 才被截断:加载文件时发生 HTTP 重定向,文件与调用程序来自不同的域,以及调用程序无可以访问加载文件的许可。

访问加载文件(和其完整 URL)的许可取决于文件类型并使用已有许可机制。访问 SWF 文件的许可在加载 SWF 文件调用 Security.allowDomain(ActionScript 3)或 System.security.allowDomain(ActionScript 1 / ActionScript 2)时被批准。访问图像和声音文件的许可在文件的服务器包含一个策略文件许可访问时被批准。需要访问完整图像或声音 URL 的 ActionScript 3 调用程序需要确保通过将 LoaderContext.checkPolicyFile 或 SoundLoaderContext.checkPolicyFile 设置为“真”预加载策略文件。

什么受影响?

该更改可能会影响任何引用 LoaderInfo.url、Sound.url 或 MovieClip._url 属性的 SWF 文件。该更改影响所有在 Flash Player 10.1 或之后版本中显示的 SWF 文件。该更改影响所有 Adobe AIR 2 或之后版本中的非应用程序内容(但是,AIR 应用程序内容不受影响)。

我需要做什么?

开发人员需要使用 Flash Player 10.1 测试其内容。如果 URL 截断有负效应,开发人员将需要使用 allowDomain 或上面描述的策略文件机制,更新其 SWF 内容以支持截断 URL,或者获得访问加载文件的许可。

剪贴板清除 UIA

在 Flash Player 中,响应用户发起的行动(鼠标点击,键盘输入等)时,SWF 文件可能会仅清除系统 Clipboard。这种限制影响 ActionScript 3 方法 Clipboard.generalClipboard.clear() 和 Clipboard.generalClipboard.clearData()。

此更改反映了这样一个事实:清除 Clipboard 是写入 Clipboard 的一种形式。对于几个版本来说,写入 Clipboard 需要 UIA,如 本开发人员文章 中所述。

什么受影响?

该更改可能会影响任何调用 Clipboard.generalClipboard.clear() 或 Clipboard.generalClipboard.clearData() 方法的 SWF 文件。该更改影响所有在 Flash Player 10.1 或之后版本中显示的 SWF 文件。该更改影响所有 Adobe AIR 2 或之后版本中的非应用程序内容(但是,AIR 应用程序内容不受影响)。

我需要做什么?

开发人员需要使用 Flash Player 10.1 测试其内容。如果 UIA 要求有负效应,开发人员将需要更新其内容,以仅在响应用户输入事件时清除 Clipboard。

for-in 和 for-each 佚代顺序

当 ActionScript 3 代码使用一个 for-in 或 for-each 循环程序在 Object 的属性之间进行佚代时,访问属性的顺序可能偶尔与之前 Flash Player 版本的顺序不同。

想象两种不同类型的 Object 属性名称:简单的和复杂的。大多数情况下,简单属性名称是整数,而复杂属性名称是字符串。但是,也有可能使用任何值作为属性名称——因此,出于完整性目的考虑,Boolean、空和不确定值是简单的属性名称;所有其他类型,包括对象和非整数数值,是复杂属性名称。例如:

var obj : Object = new Object(); 
obj[0] = "a"; // 简单属性名称(整数) 
obj["one"] = "b"; // 复杂属性名称(字符串) 
obj.two = "c"; // 复杂属性名称(字符串)

仅在 Object 有两种类型的属性(简单和复杂)时,for-in 和 for-each 顺序将发生更改。上述示例中的 Object 有两种类型的属性,因此其 for-in 和 for-each 顺序在该 Flash Player 版本中将发生更改。特定更改是首先将访问所有简单属性名称,然后访问所有复杂属性名称。

根据 ActionScript 3 语言参考 中所述,for-in 和 for-each 佚代顺序未定,因此,希望大部分 ActionScript 3 代码不依据未发生更改的佚代顺序。

什么受影响?

该更改可能会影响任何使用 for-in 或 for-each 循环程序的 ActionScript 3 SWF 文件。该更改影响所有在 Flash Player 10.1 或之后版本中显示的 SWF 文件。该更改影响所有 Adobe AIR 2 或之后版本中的内容(既包括应用程序内容也包括非应用程序内容)。

我需要做什么?

开发人员需要使用 Flash Player 10.1 或 AIR 2 测试其内容。如果 for-in 或 for-each 佚代顺序有负效应,开发人员将需要更新其内容,以独立于佚代顺序运行。

与安全相关的可用新功能

该部分介绍新功能。除非您需要使用新功能,负责无须任何行动。

装载环境,循序代码进入

在 Flash Player ActionScript 3 API 中,加载 SWF 文件的方法与加载图像文件(JPEG、PNG 和 GIF)的方法相同。部分情况下,可以加载图像并确保不可能加载 SWF 文件。其中一种极其重要的情况是沙盒导入:从另一个可能不受信任的域导入一个图像文件,并将其重新分配到加载程序的安全域中。导入一个不受信任的图像文件通常情况是无害的,因为不受支持的图像文件格式无法包含可执行代码,但是导入一个不受信任 SWF 文件可能会更加危险。

有两种 Flash Player 方法可以执行沙盒导入。两种方法均仅在 ActionScript 3 中可用。第一种方法是 Loader.loadBytes,从 ActionScript 中取得原始二进制数据,并将其作为展示媒体加载。第二种方法是 Loader.load,其中 LoaderContext.securityDomain = SecurityDomain.currentDomain,从 URL 加载媒体。

对于 Flash Player 10.1 和 AIR 2,您可以通过指定 LoaderContext.allowCodeImport = false 限制两种方法仅加载图像。以下是使用 loadBytes 的部分示例代码:

var ld : Loader = new Loader();
ld.contentLoaderInfo.addEventListener("complete", onLoadComplete);
ld.contentLoaderInfo.addEventListener("securityError", onSecurityError);
var lc : LoaderContext = new LoaderContext();
lc.allowCodeImport = false;
ld.loadBytes(myByteArray, lc);

如果当您为导入操作设置 LoaderContext.allowCodeImport = false 时要加载的内容是 SWF 文件,将分派一个 SecurityError 事件,显示错误 3226:

"Cannot import a SWF file when LoaderContext.allowCodeImport is false."

请注意:LoaderContext.allowCodeImport 仅影响执行沙盒导入的情况——因此,例如,一个普通的 Loader.load 操作将总是可以加载 SWF 文件或图像文件,即便 LoaderContext.allowCodeImport = false。

LoaderContext.allowCodeImport 是一个较早的名为 LoaderContext.allowLoadBytesCodeExecution 的仅 AIR 属性的概括。在 AIR 中,两个属性现在是同义词。在 AIR 中,LoaderContext.securityDomain 属性不受支持,因此在 AIR 中执行沙盒导入的唯一方法是 Loader.loadBytes,这就是旧的仅 AIR 属性名为 allowLoadBytesCodeExecution 的原因。新属性名称 LoaderContext.allowCodeImport 是首选,因为它在 Flash Player 同样受支持。

SWF 文件将图像文件导入其自己的沙盒有两个常见原因。首先是 Loader.loadBytes 支持动态图像处理和复制。其次是导入将删除安全限制,如检查像素值或调用 BitmapData.draw。

注:导入图像首先总是需要一个策略文件——因此,这仅仅是一种将安全检测移至较早阶段的方法。

后续工作

关于 Flash Player 安全的最新发展,请访问 安全话题中心。Adobe 为每个 Flash Player 版本都发布了一篇类似本文的文章。

您也可以从 Flash Player 下载中心 下载 Flash Player 10.1

分享到:
评论

相关推荐

    flashplayer V10.1.85

    为了保持最佳性能和安全性,建议定期检查更新,确保始终使用最新版本的Flash Player。 总之,FlashPlayer V10.1.85作为一款重要的多媒体播放工具,其单文件运行模式和丰富的功能使其在当时的网络环境中占据着重要...

    Adobe FlashPlayer 10.1.53.64

    FlashPlayer 10.1.53.64debug独立播放器版; FlashPlayer 10.1.53.64插件版for IE和firefox FlashPlayer 10.1.53.64-debug插件版for IE和firefox; FlashPlayer卸载工具

    Flash Player10.1.102.64

    总的来说,Flash Player 10.1.102.64在当时是一个重要的更新,它改进了性能和安全性,而配套的回滚工具则为用户提供了便捷的卸载解决方案。尽管现在Flash已经逐渐淡出舞台,但了解其历史和运作机制对于我们理解Web...

    flashplayer 10.1.102.64 for Linux 64bit

    Adobe公司也在2020年底正式停止了对FlashPlayer的技术更新和安全维护。因此,尽管FlashPlayer 10.1.102.64版本在当时是先进的,但如今可能已无法满足所有网站的需求。用户应关注网页上的提示,考虑升级或切换到HTML5...

    FLASH10.1 调试版播放器

    标题中的“FLASH10.1 调试版播放器”指的是Adobe Flash Player的一个特定版本,即10.1版本,且是专为开发者设计的调试版本。Flash Player是一款广泛应用于网页上的多媒体内容播放器,它能够播放动画、视频、交互式...

    Adobe_flash_player_10.1ax_r82.exe

    Adobe flash player version for IE 收录 install_flash_player_10.1ax_r82.exe ---version:10.1.82.76

    flash10.1兼容文件

    标题中的“Flash10.1兼容文件”指的是与Adobe Flash Player 10.1版本兼容的各类文件。Adobe Flash Player是一款广泛使用的多媒体软件平台,主要用于在网页上展示交互式内容,如动画、视频和游戏。Flash 10.1是Adobe...

    ie插件- flashplayer debug 10.1 调试版 天涯浪子

    ie插件- flashplayer debug 10.1 调试版 天涯浪子

    飞思卡尔i.MX平台支持Flash Player 10.1

    通过与Adobe和Movial的紧密合作,飞思卡尔将把Adobe Flash Player 10.1引入其i.MX平台,支持运行Linux 或Android操作系统并提供卓越的视频和图形功能的消费产品开发。  这几家公司从飞思卡尔i.MX51系列处理器着手,...

    firefox - flashplayer debug 10.1 调试版 天涯浪子 for windows

    firefox - flashplayer debug 10.1 调试版 天涯浪子 for windows

    嵌入式系统/ARM技术中的飞思卡尔i.MX平台支持Flash Player 10.1

    通过与Adobe和Movial的紧密合作,飞思卡尔将把Adobe Flash Player 10.1引入其i.MX平台,支持运行Linux 或Android操作系统并提供卓越的视频和图形功能的消费产品开发。  这几家公司从飞思卡尔i.MX51系列处理器着手,...

    flash debug10.1.82.76

    Adobe于发布了Flash Player 10.1的更新版本,用于修复已发现的6个处于严重等级的安全漏洞,这也是Adobe今年第三次发布Flash Player的更新补丁,之前分别在3月和6月发布补丁修复了33个安全漏洞。

    Flash插件_Flash_Player_10.1.105.6 for Android 2.2.apk

    Flash插件_Flash_Player_10.1.105.6 for Android 2.2.apk 本包为完整的包,包含市面上常用的软件,适合玩机的魅友下载使用! 魅族迷自收到评测机10天以来精心测试的魅族m9软件,从1200多个软件中挑选的130个软件和...

    怎样在Ubuntu Linux上安装最新的FlashPlayer 10

    在安装完成后,可以在浏览器中打开相关网站来检测当前的 FlashPlayer 版本,如果安装正确的话,应该显示版本号为 LNX 10,2,151,49。 需要注意的是,这个版本只支持 32 位机器。 Adobe 公司的 FlashPlayer 是一个...

    Flash Player 卸载工具 Adobe Flash Player Uninstaller 34.0.0.92.rar

    4. **卸载流程**:使用官方提供的卸载工具能确保卸载过程的完整性和安全性,避免手动卸载可能遗漏的文件或设置。 5. **系统清理**:卸载后,建议进行一次系统清理,检查是否有遗留的Flash Player相关文件或设置,并...

    64位浏览器的flash插件下载(flashplayer for 64-bit browser)

    标题 "64位浏览器的Flash插件下载(flashplayer for 64-bit browser)" 指的是Adobe Flash Player的64位版本,这是一个用于在Web浏览器中播放Flash内容的插件。在过去的互联网时代,Flash是展示动画、游戏和多媒体内容...

    FlashPlayer_flashplayer_

    此外,开发者还需要关注安全性问题,因为FlashPlayer在后期版本中存在许多安全漏洞,这可能需要在应用程序中进行额外的防护措施,比如限制Flash内容的权限或及时更新Flash Player组件。 总结来说,"FlashPlayer_...

    flashplayer_10独立播放器

    网上下载的FLASH小游戏,在电脑上玩的话,必须要有这个FLASH播放器,这款独立播放器和你的小游戏放一块,玩的时候直接把游戏拖到这个播放器上就可以玩了,很方便。

    flashplayer-34.0.0.289独立版

    标题中的“flashplayer-34.0.0.289独立版”指的是Adobe Flash Player的一个特定版本,这是Adobe公司开发的一款广泛应用于网络上的多媒体内容播放器。Flash Player的主要功能是解析和执行SWF文件,这种文件格式通常...

    flashplayer_debug_10.1.102.64下载

    flashplayer_debug_10.1.102.64视频播放

Global site tag (gtag.js) - Google Analytics