WCF跨越邊界正確實現(xiàn)方式
WCF的出現(xiàn),為開發(fā)人員帶來了不一樣的使用體驗。它可以為我們提供一個依賴性較強,可跨平臺的解決方案。那么今天,我們就可以為大家詳細了解一下WCF跨越邊界的相關實現(xiàn)方法,希望能給大家?guī)硪恍椭?t#
使用WCF跨越邊界進行通信的時候需要預防幾種類型的安全漏洞,它們可被用于違法利用 Web 應用程序。“跨站點偽造”(Cross-site forgery) 作為一種利用手段,在允許跨域調(diào)用時會成為威脅。此利用手段包括在用戶不知情的情況下向第三方服務傳輸未授權命令的惡意 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 域上承載的服務調(diào)用未授權操作。
若要允許 Silverlight 控件訪問其他域上的服務,該服務必須明確選擇允許跨域訪問。通過選擇,服務聲明它公開的操作可以由 Silverlight 控件安全地調(diào)用,而不會對該服務存儲的數(shù)據(jù)造成具有潛在危害的結果。
Silverlight 2.0 支持兩種不同的機制供服務選擇WCF跨越邊界訪問:
在承載服務的域的根目錄中放置一個 clientaccesspolicy.xml 文件,以配置服務允許跨域訪問。
在承載服務的域的根目錄中放置一個有效的 crossdomain.xml 文件。該文件必須將整個域標記為 public。Silverlight 支持 crossdomain.xml 架構的一個子集。
使用 clientaccesspolicy.xml 文件來允許WCF跨越邊界訪問
構建允許 Silverlight 客戶端訪問的服務。有關 有關 如何進行此操作的更多信息,請參見如何:為 Silverlight 客戶端構建服務。
創(chuàng)建允許訪問該服務的 clientaccesspolicy.xml 文件。以下配置允許從任何其他域訪問當前域上的所有資源。
- < ?xml version="1.0" encoding="utf-8"?>
- < access-policy>
- < cross-domain-access>
- < policy>
- < allow-from http-request-headers="*">
- < domain uri="*"/>
- < /allow-from>
- < grant-to>
- < resource path="/" include-subpaths="true"/>
- < /grant-to>
- < /policy>
- < /cross-domain-access>
- < /access-policy>
將 clientaccesspolicy.xml 文件保存到承載該服務的域的根目錄中。例如,如果該服務在 http://fabrikam.com 上承載,則文件必須位于 http://fabrikam.com/clientaccesspolicy.xml。
標頭屬性的有效值包括允許所有未列入黑名單的標頭的通配符 (*),以及允許標頭的逗號分隔列表。這些允許的標頭可以使用通配符后綴,例如“X-CUSTOM-*”。
或者,如果只允許從其他域中的一個進行訪問(例如 http://contoso.com),clientaccesspolicy.xml 應當包含以下配置。
- < ?xml version="1.0" encoding="utf-8"?>
- < access-policy>
- < cross-domain-access>
- < policy>
- < allow-from http-request-headers="*">
- < domain uri="http://contoso.com"/>
- < /allow-from>
- < grant-to>
- < resource path="/" include-subpaths="true"/>
- < /grant-to>
- < /policy>
- < /cross-domain-access>
- < /access-policy>
通過從其他域調(diào)用服務來測試是否已啟用訪問。
使用 crossdomain.xml 文件來允許跨域訪問
構建允許 Silverlight 客戶端訪問的服務。
創(chuàng)建包含以下配置的 crossdomain.xml 文件。必須將該文件配置為允許從任何其他域訪問服務,否則 Silverlight 2.0 將無法識別它。
- < ?xml version="1.0"?>
- < !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="*"/>
- < /cross-domain-policy>
將 crossdomain.xml 文件保存在承載服務的域的根目錄中。例如,如果該服務在 http://fabrikam.com 上承載,則文件必須位于 http://fabrikam.com/crossdomain.xml。
通過從其他域調(diào)用服務來測試是否已允許訪問該服務。
以上就是我們?yōu)榇蠹医榻B的WCF跨越邊界的處理方法的全部內(nèi)容。