网吧安全沙箱冲突怎样处理没事吧

您所在的位置: &
FlexSocket安全沙箱冲突及解决方案
FlexSocket安全沙箱冲突及解决方案
本文向大家简单介绍一下FlexSocket安全沙箱冲突及解决方案,这是FP被广为唾骂的特性之一,其设计糟糕至极。Adobe貌似认为9秒时间对用户来说很短。
本文和大家重点讨论一下FlexSocket安全沙箱冲突及解决方案,FlexSocket连接SocketServer时,javaSocket、c++Socket,抑或其它,首先会开一个Socket连接主机的843端口请求安全策略文件,这个时间为3秒;如果此步未能成功,则看开发者是否显式调用了Security.loadPolicyFileAPI。
FlexSocket安全沙箱冲突及解决方案
这是FP被广为唾骂的特性之一,其设计糟糕至极。Adobe貌似认为9秒时间对用户来说很短。
1,糟糕的设计可能使用户浪费9秒时间
FlexSocket连接SocketServer时,javaSocket、c++Socket,抑或其它,首先会开一个Socket连接主机的843端口请求安全策略文件,这个时间为3秒;如果此步未能成功,则看开发者是否显式调用了Security.loadPolicyFileAPI,如下
Security.loadPolicyFile(&xmlsocket://127.0.0.1:1843&);&
如有,则再次尝试从这个端口加载策略数据,又是3秒。如果此步又未能OK,则尝试从开发者定义的FlexSocket主机端口再次加载安全策略,此时会发送这样一个请求:
如果SocketServer没有处理这个请求,客户端将无法进一步完成FlexSocket连接。这个过程又是3秒。如果软件设计不当,客户端将浪费9秒的时间才能知道它有没有获得Server的连接许可,这张门票有点贵了。FP如能成功加载到安全策略数据,会把所用socket抛弃(即使从主机端口请求亦是如此),然后执行开发者的socket连接逻辑。
2,合理的方案,用java实现
在SocketServer端单开一个843端口,用于专门向客户端提供安全策略文件,java示例代码如下:
packagesban.socketS &&importjava.io.BufferedInputS &importjava.io.BufferedR &importjava.io.F &importjava.io.FileInputS &importjava.io.IOE &importjava.io.InputStreamR &importjava.io.PrintW &importjava.net.InetSocketA &importjava.net.ServerS &importjava.net.S &importjava.net.SocketA &importjava.net.URL; &&/** &*sbanpolicyserverforflex/flashsocket &* &*@authorsban//sban.biz&* &*/ &publicclassSbanSocketPolicyServer{ &&publicSbanSocketPolicyServer(){ &&&} &&&publicstaticStringreadFileAsString(Stringurl) &&&&throwsjava.io.IOException{ &&&byte[]buffer=newbyte[(int)newFile(url).length()]; &&&BufferedInputStreamf=newBufferedInputStream( &&&&&newFileInputStream(url)); &&&f.read(buffer); &&&f.close(); &&&returnnewString(buffer); &&} &&&publicstaticvoidmain(String[]args)throwsIOException{ &&&ServerSocketserver=newServerSocket(); &&&SocketAddressendpoint=newInetSocketAddress(&127.0.0.1&,843); &&&server.bind(endpoint); &&&Stringpath=SbanSocketPolicyServer.class.getResource(&../../crossdomain.xml&).getPath(); &&&System.out.println(path); &&&Stringpolicy=readFileAsString(path); &&&&while(true){ &&&&System.out.println(&waitforclient...&); &&&&Socketsocket=server.accept(); &&&&&BufferedReaderin=newBufferedReader(newInputStreamReader( &&&&&&socket.getInputStream())); &&&&PrintWriterout=newPrintWriter(socket.getOutputStream()); &&&&Strings=in.readLine(); &&&&System.out.println(s); &&&&&if(s.indexOf(&policy-file-request&)-1){ &&&&&out.print(policy+'\0'); &&&&&out.flush(); &&&&&in.close(); &&&&&out.close(); &&&&&System.out.println(&sendedpolicycontext.&); &&&&&socket.close(); &&&&} &&&} &&&} &} &&
而crossdomain.xml文件的示例代码为:
&site-controlpermitted-cross-domain-policies=&all&&allow-access-fromdomain=&*&to-ports=&*&&&
将crossdomain.xml文件与执行文件放置一起
3,你可以借用的jar执行文件
sban把上述java导出为jar可执行文件:
SbanSocketPolicyServer.zip5.8KB
在Windows下,确定已安装java环境,并已设定环境变量,在命令行窗口中执行如下命令:
java-jarSbanSocketPolicyServer.jar
说明:该java程序未经优化,仅作为教程示例,不建议在商业项目中使用。
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
Angular.js 是一个MV*(Model-View-Whatever,不管是MVC或者MVVM
所以姑娘,让我们做一枚花见花开的程序媛。
在过去的近十年的时间里,面向对象编程大行其道。以至
很久很久以前,冬天爱上了夏天,可是他们始终不能相见
流火过,金秋来,在学校开学之前的最后一周,终于凉快
本书分为8章,首先介绍ASP.NET的开发技巧和重点技术,尤其针对初学者如何快速入门并掌握ASP.NET编程做了深入浅出的介绍;然后重
51CTO旗下网站SecurityError: Error #2122: 安全沙箱冲突,该怎么解决 - Flex当前位置:& &&&SecurityError: Error #2122: 安全沙箱冲突,该怎么SecurityError: Error #2122: 安全沙箱冲突,该怎么解决&&网友分享于:&&浏览:19次SecurityError: Error #2122: 安全沙箱冲突SecurityError:&Error&#2122:&安全沙箱冲突:BitmapData.draw:http://localhost:8080/NumeralHall/admin.swf&不能访问&http://127.0.0.1:8080/zheda/upload/photo/edrf.jpg。需要一个策略文件,但在加载此媒体时未设置&checkPolicyFile&标志。
at&flash.display::BitmapData/draw()
at&com.view.admin::ProductsView/generateHouseImage()[D:\Java\HLSQ\NumeralHall\flex_src\com\view\admin\ProductsView.mxml:238]
at&Function//AS3/2006/builtin::apply()
at&SetIntervalTimer/onTimer()
at&flash.utils::Timer/_timerDispatch()
at&flash.utils::Timer/tick()
大家看看这是什么问题,网上说应该加一个crossdomain.xml,但是应该把这个文件加在哪个位置?
谢谢各位------解决方案--------------------楼主应该是没有权限,你加载到src下面试试。------解决方案--------------------apache-tomcat-6.0.29\webapps\工程名\crossdomain.xml------解决方案--------------------把crossdomain.xml放到网站根目录,也就是当下面的这个路径能够正确访问,才行
http://127.0.0.1:8080/crossdomain.xml------解决方案--------------------客户端访问服务器上资源确实需要跨域策略文件
crossdomain.xml放哪都可以
只要Security.loadPolicyFile(url)中路径与存放位置匹配即可
只不过一般放在根目录而已~~~
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有

我要回帖

更多关于 2060安全沙箱冲突 的文章

 

随机推荐