在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
理解 flash 的 sandbox 安全机制 Flash的sandbox 是用来判定当swf文件在不同网络环境(地方)哪些文件可以被访问。一个函数在客户端和服务端被执行的效果是不同的。 例如 一个swf在本地sandbox 不能同时被被本地和remote对象同时访问的。这一方法保证了程序不能被其他对象引用的安全目的。 本地文件可以选择下列三个中的一个安全沙箱: Local-with-filesustem: 确保用户的本地内容不会被发送或共享到网络。 Local-with- networking-sandbox:允许本地swf文件被指定的远程对象(remote)调用,条件是swf检测到本地crossdomain 文件中有对应的域。 Loal-trust:任何在这个sandbox中的swf可以被任何对象调用(本地和远程)只有用户和管理员才能将swf转移到此sandbox中 Loal-trust sandbox 是不能通过单独的swf来修改的,这种做法是为了保证用户的安全需求。 为了允许远程某个的域访问调用,你必须先调用allowDomain()函数来将其地址添加到 Security类中。 你也可以通过修改crossdomain文件来允许外部某些特殊域或通过”*”来允许全部的外部访问。<allow-access-from-domain=”*”> 设置sandbox种类 当你在发布swf时,你可以选择你需要的sandbox种类。步骤为: ….. 利用sandboxtype的不同属性 一个swf文件可以使用静态只读的安全级别。Sandbox种类的属性将决定flash player对当前swf文件所允许的操作。 在一些情况下,你可能会根据当前的sandbox种类的值来 决定程序的交互步骤。
Sandboxtype可以用来干什么 判断当前的Sandboxtype 不仅仅是只能用来完成一个简单的trace动作。你也可以用这个来提醒那些未授权用户:当前swf文件不能被远程调用,他们只能在本地运行。你也可以立刻停止一个swf的运行当发现 local-sandbox时,这种情况是这个swf文件并非在你的网站上运行。例如 swf文件被从你的网站上下载,就可以采取对应措施来防止内容被窃取。 在local-sandbox 运行程序。 下面的例子将会检查sandboxtype,当其发现swf被local-sandbox运行时 将会切断连接。 第一步是创建需要的变量
Var timer:Timer;
Var sandbox:String; Var startingTime:uint=5; 变量申请完后,你可以开始着手来构建初始化函数了,它将会在影片运行时立即被调用。
1 Function init():void
2 3 { 4 5 tinerMC.alpha=0; 6 7 sandbox=Security.sandboxType; 8 9 10 11 if(sandbox.indexof(‘local’)==-1) 12 13 { 14 15 startTime(); 16 17 } 18 19 20 21 } 这一部分最关键的是if判断状态,它会在当前sandoxType中检索“local”字段。这一方法试用于任何版本的检测。如果是sandbox是local则删除,这一功能由startTimer来实现,它将初始化并开始关闭倒计时。 startTimer 函数首先是初始化一个timer的实例然后是添加监听器。函数的最后一步是展现出计时器的效果,通过设置alpha属性值为1来实现。
Function startTime():void
{ StartTime*=1000; Timer= new Timer(1,0); Timer.addEventListener(TimerEvent.TIMER,tickHandler); Timer.start(); TimerMc.alpha=1.0; } 事件处理函数:
Code
方法是播放剩余的秒数,剩余秒数是剩余的毫秒数转换到秒数取整得到的。 剩余毫秒数是通过getTimer()系统函数来获取的,它将返回当前影片被运行的时长(毫秒数)。 当剩余时间为0时,将停止播放。 ……. 后面是程序的具体解释 就不详谈了。 ……. 确保程序不被共享 上一个例子是创建一个类似于sandbox类型检查器,接下来的例子将更直接,它对未经允许的站点都是不可见的。 这一实现原理是通过在loaderInfo对象的url属性来实现的。这一属性对任何已读取对象都是可视的。本例中已读取对象是stage,因为它是最底层的displayObject。判断位置的代码如下:
If(String(stage.loadInfo.url).indexOf(‘example.org’)!=-1)
{ Stage.removeChildAt(0); } |
2022-08-17
2022-11-06
2022-08-18
2022-08-15
2022-08-16
请发表评论