silverlight 跨域socket

來源:互聯網
上載者:User
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運行時發送一個特殊的字串<policy-file-request>到伺服器以獲得策略檔案。Silverlight2運行時會等待目標網站返回Silverlight策略檔案。如果返回了(即便解析出錯),也會用作策略檔案。

如果策略檔案正確解析,並且保證了許可權,串連會建立。否則,串連以及以後的串連均被阻止。

另一個socket串連的限制是伺服器連接埠必須在4502-4534之內。如果伺服器提供伺服器的連接埠不在其內,可以用程式重新導向(例如ssh)

為WebClient/HTTP部署安全性原則檔案,系統管理員需要配置web service,以便可以下載策略檔案。

為socket部署安全性原則檔案,系統管理員需要配置一個單獨的認證服務。

如下是一個開放socket 4502~4506連接埠的策略檔案。必須listen在943連接埠。(這個問題很令人鬱悶,這個綁定衝突怎麼解決?)

<?xml version="1.0" encoding ="utf-8"?><access-policy>  <cross-domain-access>    <policy>      <allow-from>        <domain uri="*" />      </allow-from>      <grant-to>        <socket-resource port="4502-4506" protocol="tcp" />      </grant-to>    </policy>  </cross-domain-access></access-policy>
如果發現943被bind,kill掉該process,啟動自己的server,同時策略檔案允許所有。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.