`

[转]安全沙箱问题

阅读更多
某个列表flash页面需要支持gravatar的头像
(gravatar的跨域策略文件位于http://www.gravatar.com/avatar/crossdomain.xml)
在加载他们提供的图片头像时我遇到了安全沙箱冲突,错误信息是:
SecurityError: Error #2123: 安全沙箱冲突:Loader.content:http://www.**********/lib.swf 不能访问 http://www.gravatar.com/avatar/3b3be63a4c2a439b013787721dfce802.jpg?s=26&d=monsterid。未被授权访问任何策略文件。
at flash.display::Loader/get content()
at org.mousebomb.srcloader::SwfLoader/onLoadComplete()
一开始我以为是要Crossdomain文件的,我加上了Security.loadPolicyFile(“http://www.gravatar.com/avatar/crossdomain.xml”); 尝试,无效。
其实并不需要的——我只是要发布到网站后跨域读取并显示图片,这在远程网络域中,是直接允许以只读方式访问视听媒体内容的。
后来单独写了一个文件,用Loader测试了一下可以正常读取并显示图片的。
这样想起来原来导致安全错误的原因在于我所使用的资源加载器,资源池的最终工作单位中Loader是每次加载完成一个就把此视觉对象抛出,然后unload以便再次接受新任务。
片段代码:

_isFree = true;   
            var _loadedData : DisplayObject = _loader.content;   
            _loader.unload();   
            var outEvent : SrcloaderEvent = new SrcloaderEvent(SrcloaderEvent.COMPLETE, {key:_key, type:_type, data:_loadedData});   
            this.dispatchEvent(outEvent);
 

这样的抛出视觉对象(错误出现在_loader.content这句)被 Flashplayer看作为“跨域数据处理” ,违反了只读的许可,是不允许的。
解决方案
这部分直接换成Loader来加载显示就行了。
针对跨域视听媒体对象的显示与读取只能用Loader直接做容器。
[11.8补充]
根据我的理解,远程网络域的图像要想进行处理(draw之类),只要服务器上有跨域策略文件标明允许,且loaderContext读取了此策略文件就可以的,但事实上,还是无法操作。
也许是对安全策略还不够了解,上次的问题虽然解决了却没有深入研究。
今天群里有个兄台(pickgliss)为解决问题,提出这样的方式绕过Loader加载来的图片无法draw、无法操作BitmapData的问题:
先用URLLoader以二进制方式加载图片,然后用Loader.loadBytes加载为显示对象。
我在后面加上draw位图和smoothing来测试,果然可行!
注意:此方法适用于远程服务器上有跨域安全策略赋予权限,但依然无法操作显示对象。不适用于没有跨域安全策略、或者策略文件不允许的情况。
如何绕过安全错误例::

package    
{   
    import flash.display.Bitmap;   
    import flash.display.BitmapData;   
    import flash.display.DisplayObject;   
    import flash.display.Loader;   
    import flash.display.Sprite;   
    import flash.events.Event;   
    import flash.net.URLLoader;   
    import flash.net.URLLoaderDataFormat;   
    import flash.net.URLRequest;   
    import flash.utils.ByteArray;   
    
    public class Test extends Sprite   
    {   
        public function Test()   
        {   
            var req : URLRequest = new URLRequest("http://uc.discuz.net/data/avatar/001/29/18/69_avatar_middle.jpg");   
            var loader : URLLoader = new URLLoader(req);   
            loader.dataFormat = URLLoaderDataFormat.BINARY;   
            loader.addEventListener(Event.COMPLETE, __complete);   
        }   
    
        private function __complete(e : Event) : void   
        {   
            var data : ByteArray = e.target.data;   
            var loader : Loader = new Loader();   
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageDataComplete);   
            loader.loadBytes(data);   
              
        }   
    
        private function imageDataComplete(e : Event) : void   
        {   
            var dio : DisplayObject = e.target.content;   
            var bmp : Bitmap = new Bitmap(new BitmapData(dio.width, dio.height),"auto",true);   
            bmp.bitmapData.draw(dio);   
            bmp.x = 100;   
            bmp.y = 100;   
            bmp.width = 50;   
            bmp.height = 50;   
            addChild(bmp);   
        }   
    }   
}  
分享到:
评论

相关推荐

    云原生沙箱环境技术概述.pdf

    为解决这些问题,云原生沙箱环境技术应运而生,下面将详细介绍此技术的核心知识点。 首先,云原生沙箱环境技术的出现,是为了降低云原生技术的使用门槛,提供一个简单、免费的环境,让开发者可以轻松地进行学习、...

    一种加油站消防沙箱快速出沙装置的制作方法.docx

    针对这一问题,本文提出了一种创新的加油站消防沙箱快速出沙装置,旨在提高出沙效率,降低灾害风险。 该装置的核心设计在于采用脚踏式操作机构,以替代传统的手动开启方式。具体结构包括限位板、转轴、拉环、限位销...

    一种便于存沙的消防沙箱的制作方法.docx

    通过上述设计,该消防沙箱有效地解决了传统消防沙池因沙子受潮导致的板结问题,提高了消防应急效率,为变电站的安全运行提供了更加可靠的保障。在实际操作中,使用者可以根据具体情况选择不同功能的组件,以适应各种...

    flash安全的各个方面的问题

    沙箱是一种安全机制,它限制了Flash应用程序的运行环境,防止它们对用户的系统造成破坏。在Flash中,主要有两个沙箱:播放器沙箱和网络沙箱。播放器沙箱限制了代码对本地文件系统的访问,而网络沙箱则限制了网络交互...

    《11招玩转网络安全:用Python,更安全》_hstking

    8. **代码审计**:Python的静态代码分析工具,如Bandit,可帮助开发者在编码阶段发现潜在的安全问题。 9. **恶意软件分析**:Python可以用于动态和静态分析可疑文件,例如使用YARA规则匹配、PE解析库如py PEfile,...

    一种电力消防沙箱的制作方法.docx

    一种电力消防沙箱的制作方法主要关注的是提升电力设施消防效率和安全性。传统的消防沙箱存在结构简单、沙子利用率低、受潮结块等问题。本实用新型针对这些问题提出了解决方案。 首先,该电力消防沙箱采用玻璃纤维...

    groovy-sandbox:(不建议使用)编译时转换器以在限制性沙箱中运行Groovy代码

    Groovy沙盒警告:此库仅在Jenkins的上下文中维护,并且仅... 特别是,您必须至少沿着的行使用附加的CompilationCustomizer来拒绝可以绕过沙箱的AST转换,并且需要特别小心以确保在沙箱内部解析和执行不受信任的脚本。

    【JavaScript源代码】详解vue3沙箱机制.docx

    通过这种方式,Vue3 能够提供更加安全和可靠的组件化开发环境,确保每个组件在其自身的沙箱内运行,不会影响到其他组件或者全局环境。 总结起来,Vue3 沙箱机制是通过 `with` 语句和 `Proxy` 对象实现的,它确保...

    Java反序列化安全漏洞防控

    Java反序列化安全漏洞是一种严重的安全威胁,...总之,Java反序列化安全漏洞是一个广泛存在且危害严重的安全问题。只有通过不断的关注安全动态、实施有效的防御措施以及定期更新和打补丁,才能确保Java应用的安全运行。

    一种便于取沙的消防沙箱的制作方法.docx

    本文介绍的是一种便于取沙的消防沙箱的制作方法,主要解决了现有技术中因玻璃挡板不易滑动导致取沙困难、影响救援的问题。该消防沙箱设计巧妙,通过一系列结构改进,使得取沙过程更加简便高效。 消防沙箱的核心创新...

    电子政务-变电站室通风口用防沙箱.zip

    防沙箱的使用不仅可以延长设备寿命,减少维修成本,还能确保电力供应的稳定性和安全性。 在"行业分类-电子政务-变电站室通风口用防沙箱.pdf"这份文档中,我们可能会了解到以下几个方面的内容: 1. **电子政务的...

    「安全漏洞」政企安全之云化、大数据化和移动化-范渊 - 工控安全.zip

    随着云化、大数据化和移动化的深入,安全漏洞问题日益凸显。这篇由范渊探讨的工控安全主题,着重阐述了这些新兴趋势下的安全威胁及应对策略。 一、云化安全 1. 云服务的安全性:云服务提供商需要确保基础设施的安全...

    云沙箱数据采集(19年刚学go的远古项目,勿吐槽).zip

    在IT行业中,云沙箱(Cloud Sandboxing)是一种安全技术,它允许在隔离环境中执行未知或潜在有害的代码,以防止对生产系统造成损害。在这个名为"云沙箱数据采集"的项目中,我们看到使用了Go语言进行开发,这表明该...

    sandboxie沙箱源码

    在计算机科学中,沙箱技术常用于安全领域,如网页浏览器的安全模式,以及Android系统的应用沙箱等。 Sandboxie的源码主要涉及以下几个关键技术点: 1. **文件系统隔离**:在Sandboxie中,所有在沙箱内创建或修改的...

    McAfee安全战略和开放安全平台.pptx

    传统的防病毒、沙箱和机器学习等技术需要与新兴技术结合,形成一个可以快速适应威胁变化的安全网络。 McAfee提供的开放、集成和可扩展的平台旨在简化部署、统一通信和简化运维。通过实时数据总线,一旦检测到威胁,...

    jar转换成exe工具

    - 安全性:通过转换,可以避免潜在的Java安全限制,如沙箱模型。 - 隐藏源代码:转换后,可以隐藏程序的Java源代码,提高软件安全性。 3. **如何转换?** 转换过程涉及使用特定的工具,比如`jartoexe`(从压缩包...

    「安全对抗」星冕-守护这片星空 - 应用安全.zip

    此外,加密技术和安全沙箱环境可以增强终端的防护能力。 安全架构是构建整体安全防线的基础。一个良好的安全架构应包含多层次的防御,包括网络边界防护、应用层防御、数据保护和身份认证等。采用零信任模型,即...

    swift-在实际设备上查看iOS应用沙箱文件系统通过airdrop共享文件

    这个沙箱为每个应用提供了独立的文件系统,确保一个应用无法访问其他应用的数据,以此来保护用户隐私和系统安全。在Swift开发中,了解如何在实际设备上查看并操作沙箱文件系统是十分重要的。同时,通过AirDrop共享...

    数据中心与云安全解决方案.pptx

    2. 混合云环境的管理:多平台的统一安全管理变得复杂,策略同步和安全系统的集成成为关键问题。传统安全解决方案可能无法有效应对云环境的动态性和复杂性。 3. 新的网络威胁模式:传统的南北向防护不足以应对云架构...

    深入浅出云计算安全

    - **运行环境安全**:除了基本的认证与授权外,还需要考虑用户上传的代码是否安全,例如Java代码沙箱机制的有效性。 - **数据脱敏**:通过数据脱敏技术保留统计信息的同时掩盖个人信息,以解决隐私泄露问题。 ###...

Global site tag (gtag.js) - Google Analytics