silverlight 跨域socket
生活随笔
收集整理的這篇文章主要介紹了
silverlight 跨域socket
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx
一切都是臨時的,beta2相對于beta1改了很多,不知道正式發布時是否還會改變。 翻譯的作用是備忘。 Silverlight 2 beta 支持2種訪問遠程服務器的方式: System.Net命名空間中的WebClient和HTTP類。這些類使用HTTP或者HTTPS訪問。 System.Net.Sockets命名空間中的Socket類。這些類提供更低層次的socket接口,可以用在更普通的網絡通訊應用中。 這兩種情況都需要提供安全機制以防止silverlight程序發起未經允許的連接。潛在風險包括: DOS***:大量的遠程PC用來***一個特定的站點 DNS改寫***:把受害站點的DNS該寫為silverlight源站點,從而讓silverlight訪問非源站點 反向連接***:讓用戶的silverlight訪問某個遠程節點,從而***者可以通過此連接訪問用戶的私有網絡(這個***的模式是,用戶訪問了一個惡意silverlight站點,下載了silverlight并運行,該silverlight建立一個到私有網絡的連接,例如內部file server,從而實現偷竊內部file server數據的功能) Silverlight設計出了防止以上的***之外,還立足于提供管理員更好的控制。 原有的設計是僅允許silverlight訪問源站點。beta1的這個安全模型僅僅允許silverlight通過socket訪問下載的那個站點。這個源站點可以是localhost,如果這個silverlight直接從文件中打開的話。 beta包含了跨域連接的支持從而允許訪問非源站點。這個重要特性允許silverlight程序使用已有的web service。Silverlight 2 Runtime在允許一個網絡連接之前,需要首先從該網站下載一個安全策略文件。這個安全策略文件僅影響WebClient和HTTP類的跨域網絡訪問。WebClient和HTTP類在訪問源的時候,無須安全策略文件。 對于socket,這個安全策略系統不僅影響跨域訪問,也影響源訪問。即便是源訪問,也需要安全策略。這和beta1不一樣。beta1中源訪問總是被允許的。 安全策略系統基礎 Silverlight 存在2種安全策略文件: Flash policy file - Adobe Flash所使用的crossdomain.xml文件。這個策略文件僅僅用于WebClient和HTTP類。 Silverlight policy file - 可以用來在Web/Socket兩種。該文件和Flash策略文件有不同的格式。 在允許到某個網絡資源的連接之前,Silverlight2 Runtime會試圖從該網絡資源下載一個安全策略文件。不同的訪問方式有不同的下載方式。 如果連接是WEB跨域,Silverlight2 運行時使用HTTP協議下載安全策略文件。Silverlight2 運行時首先試圖從目標域的根下載Silverlight策略文件clientaccesspolicy.xml,如果能獲得這個文件(即便解析該文件出現錯誤),它也用該文件做跨域策略文件。如果找不到該文件,Silverlight運行時試圖從目標域的根下載flash策略文件crossdomain.xml。這個flash策略文件必須允許連接所有域。 如果是socket連接(跨域或者源訪問),Silverlight2運行時試圖連接目標站點的943端口(固定端口)。如果可以建立,Silverlight運行時發送一個特殊的字符串到服務器以獲得策略文件。Silverlight2運行時會等待目標站點返回Silverlight策略文件。如果返回了(即便解析出錯),也會用作策略文件。 如果策略文件正確解析,并且保證了權限,連接會建立。否則,連接以及以后的連接均被阻止。 另一個socket連接的限制是服務器端口必須在4502-4534之內。如果服務器提供服務器的端口不在其內,可以用程序重定向(例如ssh) 為WebClient/HTTP部署安全策略文件,系統管理員需要配置web service,以便可以下載策略文件。 為socket部署安全策略文件,系統管理員需要配置一個單獨的認證服務。 如下是一個開放socket 4502~4506端口的策略文件。必須listen在943端口。(這個問題很令人郁悶,這個綁定沖突怎么解決?)
????
??????
????????
??
????????
??????
????
?
如果發現943被bind,kill掉該process,啟動自己的server,同時策略文件允許所有。
一切都是臨時的,beta2相對于beta1改了很多,不知道正式發布時是否還會改變。 翻譯的作用是備忘。 Silverlight 2 beta 支持2種訪問遠程服務器的方式: System.Net命名空間中的WebClient和HTTP類。這些類使用HTTP或者HTTPS訪問。 System.Net.Sockets命名空間中的Socket類。這些類提供更低層次的socket接口,可以用在更普通的網絡通訊應用中。 這兩種情況都需要提供安全機制以防止silverlight程序發起未經允許的連接。潛在風險包括: DOS***:大量的遠程PC用來***一個特定的站點 DNS改寫***:把受害站點的DNS該寫為silverlight源站點,從而讓silverlight訪問非源站點 反向連接***:讓用戶的silverlight訪問某個遠程節點,從而***者可以通過此連接訪問用戶的私有網絡(這個***的模式是,用戶訪問了一個惡意silverlight站點,下載了silverlight并運行,該silverlight建立一個到私有網絡的連接,例如內部file server,從而實現偷竊內部file server數據的功能) Silverlight設計出了防止以上的***之外,還立足于提供管理員更好的控制。 原有的設計是僅允許silverlight訪問源站點。beta1的這個安全模型僅僅允許silverlight通過socket訪問下載的那個站點。這個源站點可以是localhost,如果這個silverlight直接從文件中打開的話。 beta包含了跨域連接的支持從而允許訪問非源站點。這個重要特性允許silverlight程序使用已有的web service。Silverlight 2 Runtime在允許一個網絡連接之前,需要首先從該網站下載一個安全策略文件。這個安全策略文件僅影響WebClient和HTTP類的跨域網絡訪問。WebClient和HTTP類在訪問源的時候,無須安全策略文件。 對于socket,這個安全策略系統不僅影響跨域訪問,也影響源訪問。即便是源訪問,也需要安全策略。這和beta1不一樣。beta1中源訪問總是被允許的。 安全策略系統基礎 Silverlight 存在2種安全策略文件: Flash policy file - Adobe Flash所使用的crossdomain.xml文件。這個策略文件僅僅用于WebClient和HTTP類。 Silverlight policy file - 可以用來在Web/Socket兩種。該文件和Flash策略文件有不同的格式。 在允許到某個網絡資源的連接之前,Silverlight2 Runtime會試圖從該網絡資源下載一個安全策略文件。不同的訪問方式有不同的下載方式。 如果連接是WEB跨域,Silverlight2 運行時使用HTTP協議下載安全策略文件。Silverlight2 運行時首先試圖從目標域的根下載Silverlight策略文件clientaccesspolicy.xml,如果能獲得這個文件(即便解析該文件出現錯誤),它也用該文件做跨域策略文件。如果找不到該文件,Silverlight運行時試圖從目標域的根下載flash策略文件crossdomain.xml。這個flash策略文件必須允許連接所有域。 如果是socket連接(跨域或者源訪問),Silverlight2運行時試圖連接目標站點的943端口(固定端口)。如果可以建立,Silverlight運行時發送一個特殊的字符串到服務器以獲得策略文件。Silverlight2運行時會等待目標站點返回Silverlight策略文件。如果返回了(即便解析出錯),也會用作策略文件。 如果策略文件正確解析,并且保證了權限,連接會建立。否則,連接以及以后的連接均被阻止。 另一個socket連接的限制是服務器端口必須在4502-4534之內。如果服務器提供服務器的端口不在其內,可以用程序重定向(例如ssh) 為WebClient/HTTP部署安全策略文件,系統管理員需要配置web service,以便可以下載策略文件。 為socket部署安全策略文件,系統管理員需要配置一個單獨的認證服務。 如下是一個開放socket 4502~4506端口的策略文件。必須listen在943端口。(這個問題很令人郁悶,這個綁定沖突怎么解決?)
????
??????
????????
??
????????
??????
????
?
如果發現943被bind,kill掉該process,啟動自己的server,同時策略文件允許所有。
總結
以上是生活随笔為你收集整理的silverlight 跨域socket的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux下如何同时启动多个Tomcat
- 下一篇: 解决“添加删除程序”里面隐藏问题