`
ch_kexin
  • 浏览: 898111 次
  • 性别: Icon_minigender_2
  • 来自: 青岛
社区版块
存档分类
最新评论

介绍as3安全问题的文章

阅读更多
转一篇介绍as3安全问题的文章as3 2009-12-28 18:19:17 阅读231 评论0   字号:大中小 订阅 .

掌握安全模型
安全模型从as2开始一直都是学习上的拦路虎。as3安全模型比起as2更加复杂。凡是包括加载与通信的行为,如swf文件之间的通信,swf与网页之间的通信,XMLSocket或webService等都受到安全机制的限制。在帮助文件中随时会提醒你注意安全模型。并且称作焦点问题。最大的问题是当发布运行程序时时不时跳出一个安全对话框。让初学者不知所措。安全性问题确实很烦人,adobe也不愿意搞的复杂,但是没办法,因为——人心太坏了。总是有些人要干坏事。不得不建立法律来限制这些人。经过整理,我尽量按照能够接受的方式按顺序讲解,能让看完教程的人不再为安全问题迷惑和烦恼的是写这教程的目标。


本地和远程:
1.本地和远程文件:
本机上的swf文件和在本地网页中嵌入的本地swf是本地文件,服务器上的swf或者服务器页面嵌入的swf文件是远程文件。

2.本地和远程访问:
使用file协议或路径名访问是本地访问,通过http协议或其它协议访问是网络访问。

关于中文路径:最好保证路径为英文名称。flash把路径名统一使用网络编码,由于操作系统编码环境的区别可能导致中文路径有出现问题。即使在同一个文件夹下,也可能因为文件夹名称为中文载不进来。因为as3可能会把相对路径转化为绝对路径。


安全沙箱:
as3中共有4种沙箱类型:
Security.REMOTE:
远程文件被放入这个沙箱中。Security.REMOTE不能访问访问本地数据。远程之间遵守跨域安全策略。页面或容器有能力与flash控件通信。
Security.LOCAL_WITH_FILE:
可以访问本地数据但不能以任何形式访问网络,包括:不能用url链接,不能载入远程数据。flash控件不能跟页面或容器通信。本地数据不能以任何方式发送到网络。
Security.LOCAL_WITH_NETWORK:
允许本地文件访问网络。访问网络要遵守跨域机制。不能以任何方式访问本地内容。
Security.LOCAL_TRUSTED:
既可以访问本地内容又可以访问网络。前提是被加入信任位置。调式模式和生成的exe也是这个级别。因为调试和运行exe都是用户主动的行为,被看作用户认可的。

除此之外:
远程沙箱中的文件始终不能访问本地。
位于相同沙箱中的资源才能互相访问。

绕过沙箱:
若想绕过flash安全机制进行数据交换。只有寻求第三方――服务器脚本。通过服务器脚本互相交换数据。但这样也要遵守脚本之间的安全机制,而且不能进行文件交流。


SecurityDomain类
SecurityDomain类基于Object,使用import flash.system.SecurityDomain声明。SecurityDomain类是单例模式。只能使用静态属性表示当前安全沙箱。当swf跨域通信时,可以把跨域沙箱中的swf载入到本地安全沙箱中。


属性:
SecurityDomain.currentDomain:SecurityDomain:
当前安全域。

跨域访问机制:
在服务器上,同一个域中的文件,数据或者swf可以任意访问。若要跨域访问需被授权。注意不同域名即使映射到相同IP地址也会被看成两个域。IP地址名和通过解析的地址也被看作两个域。有两种授权方式:策略文件和作者授权。

策略文件:
策略文件声明某个域中的文件可以被指定域访问。策略适用于所有形式的访问。是个xml文件,格式如:

<cross-domain-policy>
<allow-access-from domain=www.someSide.com secure=false/>
<allow-access-from domain="*"/>
</cross-domain-policy>

策略文件中可以使用通配符。使用*通配符表示能被所有网站访问。secure用于https协议与http互相访问。false表示允许互相访问。

默认策略文件:
默认策略文件放在网站根目录下面名字必须为crossdomain.xml。

加载策略文件:
若觉得默认策略文件给服务器维护造成影响。可放到子域中,用System.security.loadPolicyFile(url)来加载。

策略文件类型:
策略文件分为页面策略文件和套接字策略文件。套接字策略文件需要指定端口,如:

<cross-domain-policy>
<allow-access-from domain="*" to-ports="507" />
<allow-access-from domain="*.example.com" to-ports="507,516" />
<allow-access-from domain="*.example2.com" to-ports="516-523" />
<allow-access-from domain="www.example2.com" to-ports="507,516-523" />
<allow-access-from domain="www.example3.com" to-ports="*" />
</cross-domain-policy>

由于flashPlayer只检测套接字策略文件相同端口上的策略文件,而策略文件一般放入服务器中采用http访问,这时只能使用默认策略文件并且使用Security.loadPolicyFile来加载,如:
Security.loadPolicyFile("http://socketServerHost.com/crossdomain.xml")


作者授权:
有时候只想开放某个swf文件而不是整个域中的数据,作者可以使用Security.allowDomain在swf中授权。作者授权但并不代表互相通信。除非互相授权。


Security类
Security类基于Object,使用import flash.system.Security声名,Security类是个静态类,用于处理安全访问。

属性:
Security.sandBoxType:String
安全沙箱类型。使用它的静态常量表示。对应上述的4中沙箱类型:
Security.REMOTE,Security.LOCAL_WITH_FILE,Security.LOCAL_WITH_NETWORK,Security.LOCAL_TRUSTED

Security.exactSetting:Boolean
是否精确匹配域,默认为true。精确匹配指不忽略域名中的机器名,如www.flash.com与john.flash.com被看作不同的域。


方法:
Security.allowDomain(…domains):void
在swf中允许指定域访问。多个参数表示多个域,如Security.allowDomain(www.adobe.com,”www.macromedia.com”,”www.flash.com”);

Security.allowInsecureDomain(…domains):void
允许https协议的域访问。

Security.loadPolicyFile( url:String):void
加载策略文件。当不使用默认策略文件时需要加载。

Security.showSettings():void
显示安全设置面板。


应用程序域:
允许跨域加载swf后,还可能出现加载的swf中的类与主类相同而产生冲突。为此安全模型把加载的swf类用应用程序域划分。安全域为树形结构。加载的应用程序域可以是文档类应用程序域的子域。文档类的父级安全域为系统安全域。系统安全域包含所有flashPlayer类。为了为我们提供灵活的访问性,as3允许指定载入swf的位置是任何应用程序域。加入子集应用程序域的文件能够直接访问父级应用程序域。但父级必须使用getDefinition方法访问子集应用程序域。加入到文档类应用程序域的文件父级和子集可以直接访问但可能会产生同名冲突。加载到系统应用程序域则被自动划分,必须都使用getDefinition方法互相访问。

ApplicationDomain类
ApplicationDomain基于Object类,使用import flash.system.Application声明。表示应用程序域。

属性:
currentDomain:ApplicationDomain
当前应用程序域。

parentDomain:ApplicationDomain
父级应用程序域。


方法:
getDefinition(name:String):Object
从通过名称从应用程序域中获取类,命名空间或函数。

hasDefinition(name:String):Object
指定名称的定义在应用程序域中是否存在。
设置权限
必要时,我们想使用Security.LOCAL_TRUSTED沙箱进行本地数据和远程进行通信。可以更改本机flashPlayer配置文件或添加信任位置达到目的。比如使用安装程序在信任位置添加文件。但是操作必须被授权。as3的权限层次如图:

 





管理员和用户设置本地权限:
管理员设置:
系统管理员可以修改mms.cfg配置文件和设置全局flash player信任目录。mms.cfg为flashPlayer启动时的安全信息配置文件,可以限制数据加载,隐私控制,播放器更新,本地文件安全性,全屏模式,旧版文件支持6大功能。但最好不要动这个文件,因为影响太大了。全局信任目录中的地址能够使所有用户使用Security.LOCAL_TRUSTED沙箱。全局信任目录以及mms.cfg路径在C:\windows\system32\Macromed\Flash\FlashPlayerTrust下。

用户设置:
用户也有自己的配置文件和信任目录。在C:\Documents and Settings\xin\Application Data\Macromedia\Flash Player\#Security\FlashPlayerTrust下。用户也可以直接使用设置管理器来代替修改配置文件。设置管理器在adobe提供的网页上设置,地址为www.adobe.com/go/settingsmanager_cn。里面说明很详细,配置起来也很简单。如图:

 




这里选择始终允许可以禁止弹出那个烦人的警告框。


网站设置和作者设置为网络权限:
网站设置即创建跨域文件。作者设置即使用Security.allowDomain方法。


限制网络API
通过设置flash控件的alowNetworking可以限制as脚本与网络的通信。值如下:
"all"─允许使用所有as中的网络 API。默认值。
"internal"─不能调用浏览器导航或浏览器交互 API。
"none"─ 禁止使用任何网络通信,包括调用API,swf之间通信,超链接和使用共享库。


允许脚本访问:
允许as中的网络API后,还要设置flash控件的allowScriptAccess,才能调用容器API或网页脚本。allowScriptAccess值如下:
“sameDomain”:swf与网页必须位于同一域。才能访问脚本。默认值。
“always”:不限制脚本访问。
“never”:禁止脚本访问。


全屏安全限制:
要使用全屏模式必须把flash控件的allowFullScreen属性设置为true。为防止恶意用户打开网页自动全屏,只有flash控件接受了鼠标事件或键盘事件后猜允许全屏。通过dispachEvent发出的事件是不被认可的。


掌握了上述安全机制后,再看到非配到帮助文件各个角落中的安全问题强调不必去理会了。它们都没有超出这些知识点。烦恼一扫而光,就此打住,谢谢大家!!
分享到:
评论

相关推荐

    java和as3 socket通信 解决安全沙箱问题

    本篇文章将探讨如何解决AS3中的安全沙箱问题,以便与Java后台进行顺畅的Socket通信。 首先,我们需要了解AS3的安全沙箱模型。AS3的沙箱分为三类:本地信任的沙箱(Local-with-Files)、网络沙箱(Network)和本地...

    as3 解析 json

    本篇文章将深入探讨如何在AS3中解析JSON对象,以便在应用程序中使用这些数据。 一、JSON的基本结构与类型 JSON基于JavaScript语法,主要由键值对组成,键用引号包围,值可以是字符串、数字、布尔值、数组、null或...

    Crypto和AS3CORELIB

    文章可能还讨论了在AS3中实现加密时的安全最佳实践,比如密钥管理、防止中间人攻击以及加密强度的选择。 通过学习这个主题,开发者可以提升AS3应用的安全性,确保用户数据的隐私,并掌握如何在实际项目中应用加密...

    java 加密解密压缩包zip代码-as3

    本篇文章将深入探讨如何使用Java实现对ZIP压缩包的加密和解密功能,并结合AS3(ActionScript 3)进行相关应用。 首先,我们需要了解ZIP文件格式。ZIP是一种广泛使用的文件存档格式,它允许我们将多个文件或目录打包...

    as400常见问题as400常见问题as400常见问题as400常见问题as400常见问题

    标题和描述均提到了“AS400常见问题”,这暗示了文章的主要关注点在于IBM AS/400系统在日常操作中可能遇到的问题及解决方案。AS/400是IBM于1988年推出的一款多功能服务器,以其强大的数据处理能力和稳定性,在企业级...

    一个AS3实现的验证码

    【描述】虽然描述为空,但根据提供的链接,我们可以推测文章可能详细介绍了如何使用AS3来编写一个自定义的验证码组件。通常,验证码会生成一串随机字符,并以图像的形式显示,用户需要输入他们看到的字符以完成验证...

    as3全屏功能

    本篇文章将深入探讨AS3全屏功能的实现方法、注意事项以及与之相关的API。 首先,AS3提供了Stage类的fullScreen方法来实现全屏切换。通过调用此方法,舞台(Stage)可以扩展到显示器的整个可见区域。以下是一个简单...

    张志晨flash As3教程之《import》

    本篇文章将详细介绍“import”语句的基本概念、语法结构以及在实际项目中的应用案例,并通过张志晨老师的教学视频进一步加深理解。 #### 一、AS3中的import语句概述 ##### 1.1 基础概念 在AS3中,开发者经常会遇到...

    Flash AS3获取PHP数据(ActionScript3 + php + email)送ActionScript2

    标题中的“Flash AS3获取PHP数据(ActionScript3 + php + email)送ActionScript2”表明这个项目涉及了几个关键的技术领域:ActionScript3、PHP和电子邮件处理。ActionScript3是Adobe Flash Player支持的一种编程...

    AS3高手之路

    在《AS3高手之路》这一篇深度技术文章中,作者系统地介绍了Adobe Flash平台下的ActionScript 3(AS3)编程语言的相关知识点与实践技巧。这篇文章对于希望深入掌握AS3编程的专业人士来说是一份宝贵的资源。 #### 1. ...

    AS3 实现简单的登录功能

    在本文中,我们将深入探讨如何使用ActionScript 3(AS3)实现一个简单的登录功能。ActionScript是Adobe Flash Professional和Flex Builder等...希望这篇文章能为你提供一个良好的起点,助你在AS3的学习旅程中更进一步。

    信息安全_数据安全_Use Case Development as a Driver.pdf

    在标题《信息安全_数据安全_Use Case Development as a Driver.pdf》中提到的关键词信息安全和数据安全,表明本文档聚焦于通过案例开发来推动信息安全策略和措施的实施。Use Case Development(案例开发)通常指的是...

    flashas3拼图游戏源码

    本篇文章将深度剖析一款基于Flash AS3的拼图游戏源码,帮助读者理解其工作原理,提升AS3编程技能。 首先,我们要明白“源码”是什么。源码是程序员用高级语言编写的应用程序原始代码,它是软件的基石,通过编译或...

    祖玛flashAS3源码

    本篇文章将深入探讨“祖玛Flash游戏AS3源码”,带你了解游戏背后的编程技术,让你有机会亲手制作属于自己的祖玛游戏。 一、ActionScript 3.0基础 ActionScript 3.0(简称AS3)是Adobe Flash Professional、Flash ...

    as3 webservice

    本篇文章将深入探讨AS3与Web服务的交互,特别是如何使用AS3来读取Web服务。 Web服务通常基于SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)架构,提供XML(eXtensible Markup ...

    沸腾3AS流浪尘缘新闻系统 v0.45 Finish 完整版

    "沸腾3AS流浪尘缘新闻系统 v0.45 Finish 完整版"是一个专门针对新闻发布需求设计的应用程序。这个版本号"v0.45 Finish"表明它是一个经过多次迭代和优化后的成熟产品,"Finish"可能意味着该版本是某个开发阶段的最终...

    尘缘雅境图文系统(沸腾3as修改版) v0.45 build 3&nbsp;

    "尘缘雅境图文系统(沸腾3AS修改版) v0.45 build 3"是一款基于新闻发布类的软件系统,旨在为用户提供高效、便捷的内容管理和发布服务。在这个版本中,开发者进行了更新与修正,以优化用户体验和提高系统的稳定性和...

    VMWare+Linux AS3+Oraclce9i RAC

    本篇文章详细记录了在VMWare环境下搭建基于Linux AS3的Oracle9i RAC集群的过程,包括从硬件和软件环境准备、虚拟机创建与配置、操作系统安装,到最终的RAC集群部署。文章由David.Guo撰写,原始资料来源于...

    信息安全_数据安全_A multi-modelling based approach to as.pdf

    为了应对这些挑战,文章介绍了一种新的威胁建模方法。通过建模方法,可以在没有风险的情况下尝试所有可能的攻击和对策,及时进行分析,建模工作可以由不同专家分工完成,并且在设计阶段可以添加适当的对策。这种方法...

    AS400安装

    本文章根据王鹏程的《AS400安装》文档,详细解析了从准备到完成安装的全过程,旨在帮助IT技术人员更好地理解和掌握AS400的安装技巧。通过上述步骤,可以确保AS400系统的顺利部署,为企业提供一个可靠、高效的信息...

Global site tag (gtag.js) - Google Analytics