FlexSocket安全沙箱沖突怎么處理

小編給大家分享一下FlexSocket安全沙箱沖突怎么處理,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到嵐皋網(wǎng)站設(shè)計(jì)與嵐皋網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋嵐皋地區(qū)。

FlexSocket安全沙箱沖突及解決方案

這是FP被廣為唾罵的特性之一,其設(shè)計(jì)糟糕至極。Adobe貌似認(rèn)為9秒時(shí)間對(duì)用戶來(lái)說(shuō)很短。

1,糟糕的設(shè)計(jì)可能使用戶浪費(fèi)9秒時(shí)間

FlexSocket連接SocketServer時(shí),javaSocket、c++Socket,抑或其它,首先會(huì)開一個(gè)Socket連接主機(jī)的843端口請(qǐng)求安全策略文件,這個(gè)時(shí)間為3秒;如果此步未能成功,則看開發(fā)者是否顯式調(diào)用了Security.loadPolicyFileAPI,如下

Security.loadPolicyFile("xmlsocket://127.0.0.1:1843");

如有,則再次嘗試從這個(gè)端口加載策略數(shù)據(jù),又是3秒。如果此步又未能OK,則嘗試從開發(fā)者定義的FlexSocket主機(jī)端口再次加載安全策略,此時(shí)會(huì)發(fā)送這樣一個(gè)請(qǐng)求:

<policy-file-request/>

如果SocketServer沒(méi)有處理這個(gè)請(qǐng)求,客戶端將無(wú)法進(jìn)一步完成FlexSocket連接。這個(gè)過(guò)程又是3秒。如果軟件設(shè)計(jì)不當(dāng),客戶端將浪費(fèi)9秒的時(shí)間才能知道它有沒(méi)有獲得Server的連接許可,這張門票有點(diǎn)貴了。FP如能成功加載到安全策略數(shù)據(jù),會(huì)把所用socket拋棄(即使從主機(jī)端口請(qǐng)求亦是如此),然后執(zhí)行開發(fā)者的socket連接邏輯。

2,合理的方案,用java實(shí)現(xiàn)

在SocketServer端單開一個(gè)843端口,用于專門向客戶端提供安全策略文件,java示例代碼如下:

packagesban.socketServer;   importjava.io.BufferedInputStream;  importjava.io.BufferedReader;  importjava.io.File;  importjava.io.FileInputStream;  importjava.io.IOException;  importjava.io.InputStreamReader;  importjava.io.PrintWriter;  importjava.net.InetSocketAddress;  importjava.net.ServerSocket;  importjava.net.Socket;  importjava.net.SocketAddress;  importjava.net.URL;   /**  *sbanpolicyserverforflex/flashsocket  *  *@authorsban<http://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文件的示例代碼為:

<cross-domain-policy> <site-controlpermitted-cross-domain-policiessite-controlpermitted-cross-domain-policies="all"/> <allow-access-fromdomainallow-access-fromdomain="*"to-ports="*"/> </cross-domain-policy>

將crossdomain.xml文件與執(zhí)行文件放置一起

3,你可以借用的jar執(zhí)行文件

sban把上述java導(dǎo)出為jar可執(zhí)行文件:

SbanSocketPolicyServer.zip5.8KB

在Windows下,確定已安裝java環(huán)境,并已設(shè)定環(huán)境變量,在命令行窗口中執(zhí)行如下命令:

java-jarSbanSocketPolicyServer.jar

說(shuō)明:該java程序未經(jīng)優(yōu)化,僅作為教程示例,不建議在商業(yè)項(xiàng)目中使用。

以上是“FlexSocket安全沙箱沖突怎么處理”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章標(biāo)題:FlexSocket安全沙箱沖突怎么處理
URL地址:http://muchs.cn/article30/gjsepo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、靜態(tài)網(wǎng)站、、品牌網(wǎng)站設(shè)計(jì)、標(biāo)簽優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司