跨網域界限使用
使用 Silverlight 版本 4 用於跨網域通訊時,需要針對會用來入侵 Web 應用程式的數種安全性弱點提供保護。 「跨網站偽造」(Cross-site Forgery) 是一種入侵類別,已成為允許跨網域呼叫時的威脅。 這個弱點牽涉到惡意的 Silverlight 控制項在未知會使用者的情況下,將未經授權的命令傳輸至協力廠商服務。 為了避免發生跨網站要求偽造,對於影像與媒體之外的所有要求,Silverlight 預設只允許來源網站通訊。 例如,裝載於 http://contoso.com/mycontrol.aspx 的 Silverlight 控制項預設只能存取同一個網域上的服務 (例如 http://contoso.com/service.svc,而不是位於 http://fabrikam.com/service.svc 上的服務)。 這樣可避免裝載於 http://contoso.com 網域上的惡意 Silverlight 控制項對裝載於 http://fabrikam.com 網域的服務呼叫未經授權的作業。
若要讓 Silverlight 控制項存取其他網域中的服務,就必須明確加入該服務,才能允許跨網域存取。 加入之後,服務就會表示 Silverlight 控制項可以安全地叫用此服務所公開的作業,而不可能損壞此服務所儲存的資料。
Silverlight 4 支援兩種不同的機制,以供服務加入跨網域存取:
- 在裝載該服務的網域根目錄放置 clientaccesspolicy.xml 檔案,設定服務允許跨網域存取。
- 在裝載該服務的網域根目錄放置有效的 crossdomain.xml 檔案。 此檔案必須將整個網域標示為公用
clientaccesspolicy.xml
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
crossdomain.xml
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="SOAPAction,Content-Type"/>
</cross-domain-policy>