自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開(kāi)發(fā) 后端
本文向大家簡(jiǎn)單介紹一下FlexSocket安全沙箱沖突及解決方案,這是FP被廣為唾罵的特性之一,其設(shè)計(jì)糟糕至極。Adobe貌似認(rèn)為9秒時(shí)間對(duì)用戶來(lái)說(shuō)很短。

本文和大家重點(diǎn)討論一下FlexSocket安全沙箱沖突及解決方案,F(xiàn)lexSocket連接SocketServer時(shí),javaSocket、c++Socket,抑或其它,首先會(huì)開(kāi)一個(gè)Socket連接主機(jī)的843端口請(qǐng)求安全策略文件,這個(gè)時(shí)間為3秒;如果此步未能成功,則看開(kāi)發(fā)者是否顯式調(diào)用了Security.loadPolicyFileAPI。

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ì)開(kāi)一個(gè)Socket連接主機(jī)的843端口請(qǐng)求安全策略文件,這個(gè)時(shí)間為3秒;如果此步未能成功,則看開(kāi)發(fā)者是否顯式調(diào)用了Security.loadPolicyFileAPI,如下

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

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

  1. <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的連接許可,這張門(mén)票有點(diǎn)貴了。FP如能成功加載到安全策略數(shù)據(jù),會(huì)把所用socket拋棄(即使從主機(jī)端口請(qǐng)求亦是如此),然后執(zhí)行開(kāi)發(fā)者的socket連接邏輯。

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

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

  1. packagesban.socketServer;  
  2.  
  3. importjava.io.BufferedInputStream;  
  4. importjava.io.BufferedReader;  
  5. importjava.io.File;  
  6. importjava.io.FileInputStream;  
  7. importjava.io.IOException;  
  8. importjava.io.InputStreamReader;  
  9. importjava.io.PrintWriter;  
  10. importjava.net.InetSocketAddress;  
  11. importjava.net.ServerSocket;  
  12. importjava.net.Socket;  
  13. importjava.net.SocketAddress;  
  14. importjava.net.URL;  
  15.  
  16. /**  
  17. *sbanpolicyserverforflex/flashsocket  
  18. *  
  19. *@authorsban<http://sban.biz/> 
  20. *  
  21. */  
  22. publicclassSbanSocketPolicyServer{  
  23.  publicSbanSocketPolicyServer(){  
  24.  
  25.  }  
  26.  
  27.  publicstaticStringreadFileAsString(Stringurl)  
  28.    throwsjava.io.IOException{  
  29.   byte[]buffer=newbyte[(int)newFile(url).length()];  
  30.   BufferedInputStreamf=newBufferedInputStream(  
  31.     newFileInputStream(url));  
  32.   f.read(buffer);  
  33.   f.close();  
  34.   returnnewString(buffer);  
  35.  }  
  36.  
  37.  publicstaticvoidmain(String[]args)throwsIOException{  
  38.   ServerSocketserver=newServerSocket();  
  39.   SocketAddressendpoint=newInetSocketAddress("127.0.0.1",843);  
  40.   server.bind(endpoint);  
  41.   Stringpath=SbanSocketPolicyServer.class.getResource("../../crossdomain.xml").getPath();  
  42.   System.out.println(path);  
  43.   Stringpolicy=readFileAsString(path);  
  44.  
  45.   while(true){  
  46.    System.out.println("waitforclient...");  
  47.    Socketsocket=server.accept();  
  48.  
  49.    BufferedReaderin=newBufferedReader(newInputStreamReader(  
  50.      socket.getInputStream()));  
  51.    PrintWriterout=newPrintWriter(socket.getOutputStream());  
  52.    Strings=in.readLine();  
  53.    System.out.println(s);  
  54.  
  55.    if(s.indexOf("policy-file-request")>-1){  
  56.     out.print(policy+'\0');  
  57.     out.flush();  
  58.     in.close();  
  59.     out.close();  
  60.     System.out.println("sendedpolicycontext.");  
  61.     socket.close();  
  62.    }  
  63.   }  
  64.  
  65.  }  
  66. }  
  67.  

而crossdomain.xml文件的示例代碼為:

  1. <cross-domain-policy> 
  2. <site-controlpermitted-cross-domain-policiessite-controlpermitted-cross-domain-policies="all"/> 
  3. <allow-access-fromdomainallow-access-fromdomain="*"to-ports="*"/> 
  4. </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)目中使用。
 

【編輯推薦】

  1. 解析Flex安全沙箱五大解決方法
  2. Flex安全沙箱問(wèn)題解決方法
  3. 技術(shù)前沿 看Flex客戶端緩存技術(shù)如何使用
  4. 解析Flex全屏模式設(shè)置方法
  5. Flex內(nèi)存泄露解決方法和內(nèi)存釋放優(yōu)化原則

 

 

責(zé)任編輯:佚名 來(lái)源: csdn.net
相關(guān)推薦

2024-02-22 11:23:16

2010-12-24 13:05:22

2010-12-21 17:39:59

2014-09-25 13:14:53

2020-04-20 09:37:41

移動(dòng)邊緣計(jì)算云計(jì)算安全

2013-03-01 16:45:27

2011-01-21 09:50:31

2010-12-21 17:36:12

2012-09-24 14:51:39

2012-08-03 15:51:37

HillstoneNAT

2013-03-19 14:26:00

2010-12-24 12:47:20

2009-03-13 09:42:52

華為ICT安全

2013-04-09 14:52:36

2011-03-22 13:06:28

DNS

2011-06-21 09:01:02

2009-07-29 09:43:15

銀行網(wǎng)絡(luò)無(wú)線接入

2010-12-21 17:17:21

2024-09-12 15:43:46

C#代碼后端

2013-04-25 14:26:54

GridView
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)