Player的安全域SecurityDoma

上传人:wj****e 文档编号:70954277 上传时间:2022-04-06 格式:DOC 页数:20 大小:44.50KB
返回 下载 相关 举报
Player的安全域SecurityDoma_第1页
第1页 / 共20页
Player的安全域SecurityDoma_第2页
第2页 / 共20页
Player的安全域SecurityDoma_第3页
第3页 / 共20页
点击查看更多>>
资源描述
Player的安全域 Security Domain深入理解Flash Player的安全域(Security Domains)2010-12-102010年12月06日简介如果你还没有与复杂的的安全域(security domain)和应用步伐域(application domain)不懂的题目打过打交道,那末你真是个幸运的家伙。当你在加载外部内部实质意义(然后她们开始播放)的时候,默许的设置事情的大好,你甚或不懂患上她们的存在。可是某些时候你可能需要节制默许设置之外的更多举动和功效,如许你就会遇到前边所谓不懂的题目。你也许会困扰于security.allowdomain和crossdomain.xml文件的区别,又或你想要穷究有关安全性的最佳实践。如果是如许,那末本文就是你所需要的了。以下的教程将会会商啥子是安全域和应用步伐域,和她们在flash player中应该怎样施用。安全域introduction简介sandboxing沙箱security domains安全域trust信托权力委托non-executable trust不成执行文件的信托机制non-executable content without trust非受信的不成执行文件swf communication without trust在非受信的swf之间通信merging security domains归并安全域stage owner and access场景的领有者和获取职权范围local security domains当地安全域sandboxing沙箱沙箱是用于区分不同的数值和步伐执行。沙箱对安全性尤其重要。如果没有患上当的信托权力委托,两个位于不同沙箱内的内部实质意义应该没有不论什么交互。flash player的安全模子施用称为安全域的沙箱来分散内部实质意义。虽则安全性是沙箱的首要用场,但这并非独一施用沙箱的缘故原由。别的一种可能的情形是施用沙箱来避免定名冲突,这种区分代码的沙箱体式格局在flash player中被称为应用域。security domains安全域安全域在flash中是顶级的沙箱。安全域链接到内部实质意义的来源域名,或是被加载的内部实质意义(如swf文件)的来源域名。比如在下的swf文件包罗1个链接到的安全域,而在下的swf文件则有1个链接到的安全域。不同的安全域要患上swf文件在flash player中播放一时的运气行在自身的沙箱下。flash player中的安全域沙箱注重:在本教程的例子中,你将看到我用同一顶级域名义之下的不同子域来代表不同域名,这是因为在flash中,不同子域和不同顶级域同样,都被视为不同的域。示例中代码也被简化过了,在flash编纂环境下历时间线代码也能够举行试验。不成执行的内部实质意义(非swf文件),比如图片或文本文件,也被区分清楚到安全域中,同样与她们所处的域名相接洽瓜葛。实际上,恰是域名决议了这些个内部实质意义是否可以容或被某个swf文件加载。更多这方面的内部实质意义将在不成执行文件的信托机制章节及第行会商。回到swf上来,安全域区分清楚了数值和可执行代码。如果两个swf处于不同的安全域下,某个swf中的数值(比如某个变量)是不成以被其他swf获取的,固然,代码也不能执行。如果测验考试获取其他域中swf文件的数值将会孕育发生1个安全纰缪。底下的代码展览了1个swf文件诡计加载别的1个swf,并获取其文档类的实例(也就是主时间线)。loader:loader=new loader();loader.contentloaderinfo.addeventlistener(event.init,init);var url:string=你好ld.swf;loader.load(new urlrequest(url);function init(event:event):voidtrace(loader.content);/securityerror:error#2121:security sandbox violation:/loader.content:/cannot access你好ld.swf./t你好s may be worked around by calling security.allowdomain.肆意想要获取被加载的swf文件的内部实质意义的测验考试,甚或包括trace loader的content属性。城市导致安全纰缪,因为她们二者处于不同的安全域内。安全域的区分清楚也合用于flash player所施用的原生actionscript类。flash player在每个安全域中都始于了自力的原生类。举例来说,1个安全域内的xml类与别的1个安全域内的xml类是不相同的,转变此中1个xml的静态属性xml.prettyindent并不会影响到另1个安全域。底下这个swf文件加载了两个子swf,1个来自自身的域,另1个从别的的域加载。咱们转变了主文件的prettyindent属性,来看看这两个子文件的属性输出。/2xml.prettyindent=5;trace(xml.prettyindent);/5/same domain:var sameloader:loader=new loader();var sameurl:string=你好ld.swf;sameloader.load(new urlrequest(sameurl);/different domain:var diffloader:loader=new loader();var diffurl:string=你好ld.swf;diffloader.load(new urlrequest(diffurl);你好ld.swf:trace(same:xml.prettyindent);/same:5你好ld.swf:trace(diff:xml.prettyindent);/diff:2可以看到,第二个子文件的属性并没有被转变。这就申明不同的安全域具备不同的原生actionscript类界说。trust信托权力委托只管安全域只容许相同域下的通信,可是咱们可以路程经过过程信托权力委托来让处于两个不同安全域内的swf文件举行通信。路程经过过程权力委托,某个安全域内的文件可以获取另1个域内文件的的数值,或调用其方法,就像是处于相同的安全域下同样。在actionscript中,swf的信托权力委托是路程经过过程security.allowdomain(或近是的security.allowinsecuredomain)来设置的。在被信托的安全域内的代码可以调用这个方法来权力委托信托给另1个或一组在其他安全域内的swf文件。这种信托是单向的,倡议allowdomain的swf文件不能去拜候被权力委托信托的文件,错非对方也做了信托权力委托。建立信托瓜葛的安全域鄙人面的例子中,1个子swf文件调用allowdomain来容许父swf的拜候:loader:loader=new loader();loader.contentloaderinfo.addeventlistener(event.init,init);var url:string=你好ld.swf;loader.load(new urlrequest(url);function init(event:event):void/(子文件执行了allowdomain)trace(loader.content);/object documentclass你好ld.swf:security.allowdomain();如果没有授信,就像前文说到的,照旧会引发安全纰缪。可是一朝被加载的子swf调用了allowdomain往后,父swf文件就能够自由的拜候子swf文件中的内部实质意义。要注重的是在这个例子中,由于父swf文件没有权力委托的信托,所以子swf仍然没有办法拜候loader的content属性。信托长短常重要的安全观点,绝对不能失以轻心。咱们经常看见施用通配符的权力委托:/警惕哦!security.allowdomain(*);恁地做将容许所有swf文件,不单单只是你加载的或是加载你的,可以路程经过过程actionscript来拜候你文件中的数值。就算你没有在文件中包罗敏锐数值,可是如果你在文件中供给了某些方法去获取这种数值,那也可能被其他swf调用。施用allowdomain来权力委托的信托就像给了其他swf文件相称的权力:你能做啥子,我就能做啥子。在接下来的归并安全域章节中你将看到这象征着啥子。如果你只是想让swf之间可以容或通信,除了信托权力委托的方法之外咱们还可以施用sharedevents对象来使成为事实,咱们将在在非受信的swf之间通信章节中会商。non-executable trust不成执行文件的信托机制由于不成执行文件(也就长短swf文件)不能调用allowdomain代码,所以这种文件的信托机制在flash player中有纷歧样的措置惩罚方法。这就是跨域(cross-domain)计谋文件派上用场的处所。跨域计谋文件是1个放在网站的根域名义之下的定名为crossdomain.xml的xml文件。和allowdomain近似,界说了一组可以被flash player加载的安全网站域名。1个简略的跨域计谋文件的例子如次:你可以从cross-domain policy file specification()患上到具体的文件格局信息。和allowdomain不同的是,跨域计谋文件只供给了包罗所有文件(凡是是1个域下的所有文件)的用处。上边的例子暗示容许来自的肆意子域或www.example-的swf文件加载下的文件。由于存在allowdomain机制,跨域计谋文件凡是不消于权力委托swf文件的拜候。跨域加载swf的时候不会请求跨域计谋文件。只有当要把1个跨域的swf归并到时下的安全域的时候,才需要供给跨域计谋文件。这个正题将在归并安全域及第行会商。不论是标准的位于域名根目次下的跨域计谋文件照旧用security.loadpolicyfile指定的跨域计谋文件,都只有在需要的时候才会被加载:当内部实质意义被加载的同时,跨域计谋文件也被一起加载进来。加载完成后,flash player分析超过计谋文件并判断该域是否为信托swf所处的域。如果谜底是必定的话,文件正常加载,就像处于和swf文件相同的域同样。与之相反则可能有两种情况:文件不被加载文件加载乐成,可是其数值不能被swf文件直接拜候如果文件本身就是数值(文本文件,xml文件,二进制数值等等),那末文件就不会被加载。需要跨域计谋文件来加载仅包罗数值的文件如果文件除了数值之外另有其余用场(图象文件,声响文件等),那末文件照旧可以容或被加载到用户可见(可听)的环境中。比如说图象文件,就算没有跨域计谋文件,照旧可以在loader对象中预示给用户看。可是近似bitmapdata.draw等直接拜候图象数值的方法就不能运行。需要跨域计谋文件来获取其他文件的数值的引用对此可能大家都有点疑惑。实际上用户是可以拜候这些个数值的,可是swf文件不行。flash player是在掩护用户的数值不被躲藏有伤害代码的swf文件获取。用户不需要关心跨域计谋文件也能正常的浏览网页内部实质意义。但这并非说跨域计谋文件可以被轻忽,近似于底下这种过度放纵的跨域计谋文件有许多潜在的伤害:警惕哦!-正告:施用通配符(*)容许所有域的拜候等同于:用户可能可以接触到的所有处于该域下的数值都可能被肆意swf文件获取。客户真个flash player运行在时下用户的认证下,这就暗示用户的数值可能就是flash player的数值。并且flash player的数值可能被肆意在里面运行的swf获取。flash player默许只容许相同域名义之下的swf的安全数值,并限定跨域swf的运行。如果没有这层限定,swf可以获取肆意时下用户可以获取的数值。举个例子:某用户施用他的认证来登录网页的邮件客户端交来邮件,然后用户打开了1个包罗有恶意步伐的swf的页面。如果没有跨域限定的话,这个swf可以用他现存的认证偷偷地加载用户的邮件页面。用户可以拜候的内网也不例外,只要用户能去的处所,swf就能去。幸好flash player阻止了这种获取数值的举动,错非该域路程经过过程跨域计谋文件给予swf权力委托。记住1个原则,永恒不要对包罗敏锐数值的域研发跨域权力委托,纵然需要上边的信息来举行用户认证。把swf可以拜候的数值区分清楚到不同的域或子域底下。domaindescriptionpolicy hosts user hosts public dataincludes:这将要患上敏锐数值不成被拜候,可是仍然可以对其他域下的swf文件公然你的其他数值。non-executable content without trust非受信的不成执行文件如果没有跨域计谋文件的信托权力委托,flash player克制非swf文件的获取。出格是像文本那样的仅包罗数值的文件,甚或不会加载。如果你需要从1个没有跨域权力委托的域中获取数值,照旧有1个权宜的措施。跨域计谋文件用于掩护数值,出格是掩护用户数值,或说是用户可以容或接触到的数值。因为flash player是运行在客户真个,可是办事器真个代码没有这种限定。办事器完全是别的一台机器,所以用户请乞降办事器请求是完全无关的。由于办事器没有效户的限定,办事器真个代码可以从肆意公然的收集办事获取数值。也就是说包罗swf的办事器可以用于拜候外部域的数值,然后作为相同域的数值归回给flash player。由于居于相同的域下,flash player就不需要有跨域计谋文件了。底下的代码演习了1个办事器真个php脚本加载外部数值的例子:urlloader:urlloader=new urlloader();var urlvariables:urlvariables=new urlvariables();/办事器端获取外部数值的地址urlvariables.externalurl=办事器真个脚本获取外部数值并传给swfvar serverpage:string=request:urlrequest=new urlrequest(serverpage);request.data=urlvariables;urlloader.load(request);这种处理完成方案也有一定的不懂的题目。起首你必需可以容或在办事器端部署代码,某些小项目也许底子不需要办事器环境。另1个可能更重要的缘故原由是这种体式格局加倍了收集流量。起首必需从外部域加载到你自己的域下,然后才被下载到你的swf客户端。同时这也加重了你的办事器的负载。施用跨域计谋文件的话就不会有这种不懂的题目。这可以作为一种处理完成方案,但最佳照旧能用跨域计谋文件来处理完成。swf communication without trust在非受信的swf之间通信在某些情况下可能要与其他来源不那末靠患上住的域中的swf通信,你并不希望完全信托该域,铺开全数权力委托。对此loaderinfo对象的sharedevents属性供给了另一种机制。sharedevents对象是独一的1个可以在不同安全域中发送同享事务的对象。加载者和被加载者都可以路程经过过程这个对象来的方向对方发送事务。路程经过过程sharedevents对象发送的事务在两个域中都是完全受信的,这就要患上在两个安全域中传递的肆意数值都无需思量安全不懂的题目。正告:把稳!路程经过过程sharedevents对象传递了纰缪的数值仍然可能把你的swf中的数值袒露出去。比如你的事务包罗了1个复杂对象,出格是预示列表上的对象,那末你的全般swf都将袒露。所以路程经过过程sharedevents发送的事务应该限定为包罗简略数值的事务类型,避免一些被包罗后门的swf步伐加以哄骗。如果你要传递复杂的事务,那要在传递以前先做一下清算。施用sharedevents举行通信的两个swf需要确保发送和吸收的是相符的事务类型。父swf可以发出一种事务并监听另一种。子swf可以监听父swf发出的事务并发出父swf中正在监听的事务。这些个事务的名儿可以是随心的。底下的例子演习了在不同安全域中的父子swf施用sharedevents来通信简略的文本信息的情况。父swf发出fromparent事务,而子swf发出fromc你好ld事务。loader:loader=new loader();var shared:eventdispatcher=loader.contentloaderinfo.sharedevents;shared.addeventlistener(fromc你好ld,fromc你好ld);var url:string=你好ld.swf;loader.load(new urlrequest(url);function fromc你好ld(event:textevent):voidtrace(event.text);/good day var replymessage:textevent=new textevent(fromparent);replymessage.text=same to you;shared.dispatchevent(replymessage);你好ld.swf:var shared:eventdispatcher=loaderinfo.sharedevents;shared.addeventlistener(fromparent,fromparent);var firstmessage:textevent=new textevent(fromc你好ld);firstmessage.text=good day;shared.dispatchevent(firstmessage);function fromparent(event:textevent):voidtrace(event.text);/same to you肆意的事务类都可以像如许用于传递信息,也包括自界说事务。再次强调,要把稳不要把包罗引用的数值(出格是预示列表上的对象)跟着事务一起发发送去。这种情况的例子在座景的领有者和获取职权范围章节中可以找到。merging security domains归并安全域如果两个域之间建立了信托瓜葛,1个swf就能把别的1个swf加到自己的安全域内,就像是在相同的域下同样。在这种情况下信托权力委托的措置惩罚有少许不同。起首,包罗父swf的域不需要指定啥子,只要执行加载另1个swf到时下的安全域就暗示完全信托这个swf。其次,因为子swf是当即被加载到父swf的安全域中,并没有机会路程经过过程allowdomain举行信托权力委托声明。当子swf可以执行allowdomain声明的时候,已被加载并实例化到别的的域中。所以这种情况下,跨域计谋文件将派上用场。实际上这也是跨域计谋文件独一合用于对swf举行权力委托的情况。需要跨域计谋文件把跨域的swf加载到相同的安全域要加载某个swf到自己的安全域内,需要给loader.load方法指定1个loadercontext对象。loadercontext对象的securitydomain属性设置为时下的安全域(securitydomain.currentdomain)。路程经过过程如许的加载体式格局,父swf授信给子swf,而子swf的授信则需要路程经过过程跨域计谋文件。localconnection().domain);/var loader:loader=new loader();/始于1个loadercontext对象把子swf加载到时下的安全域var context:loadercontext=new loadercontext(true);context.securitydomain=securitydomain.currentdomain;var url:string=你好ld.swf;loader.load(new urlrequest(url),context);你好ld.swf:咱们可以路程经过过程localconnection对象的domain属性来查抄每个swf所处的安全域。虽则子swf原先所处的域是,可是由于它被加载到父swf所处的域中,所以子swf最终所处的安全域是。用这个体式格局加载的swf文件权力比用allowdomain权力委托的更加大。施用allowdomain权力委托,等同于说你能做啥子,我就能做啥子。而把swf加载到同1个安全域,则等同于我能做不论什么事。在前一种情况下,子swf只能调用父swf下的代码,照旧受限于父swf中的界说。可是路程经过过程加载到相同的安全域,这些个子swf就能够在你的域底下做肆意操作,这包括:获取父swf中的肆意引用读取主域中的所有文件读取其他授信给主域的所有域下的文件读取主域下的同享对象获吸取经验由过程主域建立的同享毗连通信获取授信给主域的socket毗连所以在引入跨域swf文件到你时下的安全域下的时候,你要确保这种权力不会被滥用。施用包罗安全域的loadercontext对象的load方法不是可以容或引入跨域swf到你的安全域的独一方法。loader类的另1个方法loadbytes也能够做到。和load不同的是,它不是用url来加载外部内部实质意义,而是直接加载以bytearray的情势加载对象。由于bytearray与域名之间没有接洽瓜葛,所以用loadbytes方法加载的对象将直接步入时下安全域内。因为你在加载包罗这些个字节对象以前去往都要经过某种信托权力委托,所以这凡是是安全的。localconnection().domain);/var loader:loader=new loader();var urlloader:urlloader=new urlloader();urlloader.dataformat=urlloaderdataformat.binary;urlloader.addeventlistener(plete,bytesloaded);/cross-domain policy file required to load datavar url:string=你好ldbytes.swf;urlloader.load(new urlrequest(url);function bytesloaded(event:event):voidloader.loadbytes(urlloader.data);你好ldbytes.swf:就和前边看到的例子同样,路程经过过程查抄子swf文件的localconnection.domain属性,施用loadbytes方法加载的子swf也预示为相同的安全域。正告:loadbytes方法有个小小的安全不懂的题目:可以把授信过的跨域swf和加载到时下安全域下的swf二者间的不同扯平。咱们懂患上虽则这二者都是被信托的,可是就像上边的列表中提到的,后者比前者的权力更大。你能做啥子,我就能做啥子与我能做不论什么事之间的差别,成果可以变成没有差别。这是因为授信过的跨域swf文件可以拜候父swf的不论什么对象,包括父swf对象的loader实例,一朝领有了对loadbytes方法的引用,这就象征着可以把某些字节对象加载到时下的安全域。底下的这个例子展览了这种可能性:权力委托你能做啥子,我就能做啥子security.allowdomain();/该当受掩护的数值var so:sharedobject=sharedobject.getlocal(foo,/);so.data.foo=bar;so.flush();var loader:loader=new loader();var url:string=你好ld.swf;loader.load(new urlrequest(url);你好ld.swf:var so:sharedobject=sharedobject.getlocal(foo,/);trace(trust only:so.data.foo);/trust only:undefinedvar urlloader:urlloader=new urlloader();urlloader.dataformat=urlloaderdataformat.binary;urlloader.addeventlistener(plete,bytesloaded);var url:string=你好ldbytes.swf;urlloader.load(new urlrequest(url);function bytesloadedevent):void/威吓!loadbytes加载了swf数值到父swf的安全域loaderinfo.loader.loadbytes(urlloader.data);你好ldbytes.swf:var so:sharedobject=sharedobject.getlocal(foo,/);trace(same domain:so.data.foo);/same domain:ba未来版本的flash player可能会转变这种举动,所以在步伐中不要施用这种方法。咱们应该存眷的是加载授信过的swf文件会带来的潜在威吓:袒露你的域下的所有数值。stage owner and access场景的领有者和获取职权范围当熬头个swf文件被加载到flash player中的时候,它被加到预示列表的根上,也就是咱们所谓stage对象。这也是flash player自己的预示对象的根。每个swf都有代表自己主文档类或主时间线的根(叫做root)。熬头个被始于的swf实例的根被放置于场景上,其他子swf施用loader对象的实例来加载。场景的出格之居于于它本身就位于预示列表上,所有处于预示列表上的子swf都可以取患上它的引用,可是它只有1个领有者:就是熬头个被实例化的阿谁swf。场景的领有者决议了场景所毗连的安全域。其他的swf想对场景举行特殊操作的举动都必需患上到场景所有者的信托权力委托。你可能有注重到在已往的有些步伐或是组件中,被加载到不同的域(未授信)里的时候报错。这恰是因为没有取患上对场景对象举行操作的权力委托。因为场景对象是可以被引用的,可是诸如场景的addeventlistener方法等却不成用,所以这很容易导致曲解。底下这个表格列出了场景对象限定非安全域对象拜候的成员。可能不是100%准确,首要用于参考。addc你好ldaddc你好ldatremovec你好ldremovec你好ldatgetc你好ldindexsetc你好ldindexgetc你好ldatgetobjectsunderpointswapc你好ldrenswapc你好ldrenatnumc你好ldrentabc你好ldrenmousec你好ldrenwidthstagewidthfullscreenwidthheightstageheightfullscreenheightqualityalignscalemodedisplaystatefullscreensourcerectstagefocusrectshowdefaultcontextmenucolorcorrectionaddeventlistenerdispatcheventhaseventlistenerwilltrigger鄙人面的例子入眼看场景是怎样可以被子swf拜候,可是却不能调用stage.addeventlistener方法。loader:loader=new loader();addc你好ld(loader);var url:string=你好ld.swf;loader.load(new urlrequest(url);你好ld.swf:/workstrace(stage);/object stage/does not workstage.addeventlistener(mouseevent.click,stageclick);/securityerror:error#2070:security sandbox violation:/caller你好ld.swf cannot access/stage owned by场景的这种所有者瓜葛很是操蛋,因为咱们经常需要对场景对象监听鼠标或键盘事务,比如检测键盘按下或检测鼠标在物体外部开释点这儿。在这种情况下,单靠子swf自身是没措施完成的。还好,场景领有者的父swf可以路程经过过程sharedevents传递场景事务而没必要授信给子swf。路程经过过程这种体式格局,可以在掩护主域的前提下配合完成这种事情。正告:以下这个施用典范演习了sharedevents是怎样措置惩罚安全性不懂的题目的。一些鼠标事务的relatedobject属性保有对时间线上的对象的引用。如果不经过清算,这些个对象就会袒露给没有经过授信的域。所以路程经过过程sharedevents发送事务时,要把这些个引用断根。比如mouseevent,咱们可以新建1个仅包罗必需数值的mouseevent对象。底下的示例展览了怎样路程经过过程sahredevents发送场景事务。示例中仅仅转发了mouse_out事务,固然也能够扩大于其他的事务类型。注重怎样始于1个代办别人代理事务并掩护父swf中的对象。combination:string=1-2-3-4-5;/隐私数值var loader:loader=new loader();var shared:eventdispatcher=loader.contentloaderinfo.sharedevents;var url:string=你好ld.swf;loader.load(new urlrequest(url);stage.addeventlistener(mouseevent.mouse_out,forwardmouseevent);function forwardmouseevent(event:mouseevent):void/威吓!这种做法袒露了relatedobject,也要患上其他数值被袒露/shared.dispatchevent(event);/safer:始于1个清算过的代办别人代理事务来堵截relatedobject的引用var safeevent:mouseevent=new mouseevent(event.type);safeevent.altkey=event.altkey;safeevent.buttondown=event.buttondown;safeevent.ctrlkey=event.ctrlkey;safeevent.delta=event.delta;safeevent.localx=event.localx;safeevent.localy=event.localy;safeevent.s你好ftkey=event.s你好ftkey;shared.dispatchevent(safeevent);你好ld.swf:var shared:eventdispatcher;/如果场景事务不能引用,那就路程经过过程sharedevents监听if(loaderinfo.parentallowsc你好ld)stage.addeventlistener(mouseevent.mouse_out,stagemouseout);elseshared=loaderinfo.sharedevents;shared.addeventlistener(mouseevent.mouse_out,stagemouseout);function stagemouseout(event:mouseevent):void/-stage mouse out actions here-/如果sharedevents传递了原始的鼠标事务,那末父域中的数值就袒露了!/trace(object(event.relatedobject)bination);/1-2-3-4-5幸好有safeevent这个mouseevent的实例,原有的mouseevent对象的relatedobject指向的引用被屏蔽了。实际上,所有路程经过过程sharedevents对象发送的事务都应该用这种体式格局清算一遍。local security domains当地安全域在硬盘上运行的swf文件同样有自己的安全域。当地安全域有自己奇特的举动,共分为4种安全沙箱类型:local-with-file,local-with-network,local-trusted,and application for air(本文不具体会商air)。再加上彀络上的swf,一共有5种安全沙箱。在actionscript中,你可以用security.sandboxtype来患上到时下的安全沙箱类型。local-with-file(security.local_with_file)-当地不受信托的文件,只可以拜候当地数值,不能与收集通信。local-with-network(security.local_with_network)-当地不受信托的文件,只可以拜候收集,可是不能读取当地数值。local-trusted(security.local_trusted)-当地受信的文件,路程经过过程flash player设购置理器或flashplayertrust文件权力委托。可以拜候当地和收集。application(security.application)-跟着air包而安装,运行在air步伐中。默许在这种沙箱类型下的文件可以调用肆意域下的文件(外部域可能不容许)。并且默许能从肆意其他域下加载数值。remote(security.remote)-来自收集的文件,遵照安全域的沙箱法则。由于可能从用户的硬盘上获取敏锐数值,所以当地文件在安全方面有着严酷的法则。一朝有机会,恶意的swf将可以从台式机上读取数值并上传到收集上的办事器。所以为了防止这种情况,当地的swf只容许一种类型的通信,要不就是当地,要不就是收集。并且,不同安全沙箱类型的swf不能彼此加载,避免能同时拜候收集和拜候当地的情况呈现。由于咱们不能判断当地文件的域名,所以判断当地swf文件的安全沙箱用的是别的一种情势。只容许当地和只容许收集这两种情况是路程经过过程swf文件内的标识来区分的,所有的swf在公布的时候都带有这种标识,当swf在当地运行的时候,flash player就用它来检测安全沙箱类型。对当地的信托文件,相同的不懂的题目是咱们没有处所来生存跨域计谋文件,所以咱们路程经过过程flash player的设购置理器里的整个的局面:胸怀安全设置面板来设置。路程经过过程下图中所示的下拉菜谱把当地swf的路径新增到当地的安全文件列表里。flash player设购置理器另一种体式格局是路程经过过程配备布置文件的体式格局。配备布置文件不像设购置理器那样需要联网来施用。要把swf或包罗swf的文件夹新增到信托位置的话只需要新增路径到flash player的#securityflashplayertrust下的.cfg文件就能够了。在mac和windows上,这个路径如次:windows 95-xp:c:documents and settingsusernameapplication datamacromediaflash player#securityflashplayertrustwindows vista-7:c:usersusernameappdataroamingmacromediaflash player#securityflashplayertrustmac os x:/users/username/library/preferences/macromedia/flash player/#security/flashplayertrust把username替代为你的用户名。两种方法都是把信托权力委托信息写入你的硬盘(整个的局面:胸怀安全设置面板也同样,生存在flash player的特别指定目次下)。这些个文件就像你当地的跨域计谋文件同样。当flash player读取的时候,信托权力委托给swf,并覆盖swf文件中有关当地拜候职权范围的标识,从而容许受信的swf可以容或同时拜候当地和收集。当地安全域有关当地信托机制另有一点儿需要注重的是纵然是当地受信的文件,仍然不能把处于外部沙箱的内部实质意义加载入当地沙箱。大部分数flash内部实质意义都是为收集始于的,所以凡是不需要完全理解当地的安全沙箱机制。可是研发和试验是1个例外。flash编纂器在试验的时候就是把swf放在1个当地受信的安全沙箱里面。这可能会造成与真正公布的swf情况不同的成果,因为二者的安全沙箱不同。比如你试验的时候可以从没有授信的外部域读取内部实质意义,而真正公布到网站上的swf却没有办法加载。所以当你试验的时候要注重,你所看到的成果和最终公布的版本可能纷歧样。你可以到flash player developer center()的security section查看更具体的安全相关信息。历史上的今天:谷歌地球:北岳恒山2010-12-10NSIS初级教程2010-12-10为什么原子弹爆炸后是蘑菇状的云?2010-12-10特别声明:1:资料来源于互联网,版权归属原作者2:资料内容属于网络意见,与本账号立场无关3:如有侵权,请告知,立即删除。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!