2013-11-21 35 views
-1

如果我在.NET中使用類似WCFASMX的Web服務,則在服務器上發佈此服務時,您將無法從任何其他位置訪問它應用程序託管它,除非您更改安全設置以允許跨域訪問。如何將跨域Web服務的使用量限制爲某些請求

如果地址已知,現在任何應用程序都可以使用此Web服務,對嗎? 例如,你可以在你的本地瀏覽器中調用該服務器的Web服務,並看看會發生什麼......

問題是 我怎麼能保證這個Web服務......並限制消費某些定義的應用程序或要求已預先定義的Web服務?

+0

不確定你的意思是XSS ... XSS是指一個安全漏洞。你想要做什麼 - 對我來說,你看起來像你的網站有一個域讓你的網站發出AJAX請求,但你現在想要引入一個移動應用程序來使用相同的API?這實際上是一個不同的域名(例如foo.com vs bar.com)? – SilverlightFox

+0

XSS意味着跨站點腳本...是的,它是一個安全漏洞...我想要做的是當你知道元數據地址時,阻止任何人使用我的Web服務(並告訴我它有多難在您的網絡上查找HTTP請求:) –

+0

http://en.wikipedia.org/wiki/Cross-site_scripting - 與允許來自不同應用程序(或域)的Web服務不同。 – SilverlightFox

回答

3

現代瀏覽器默認情況下阻止跨域訪問。這可以通過利用由CORS規範定義的Access-Control-Allow-Origin頭來有條件地放鬆。具體來說,來自現代瀏覽器的跨域XHR請求將始終包含一個Origin標頭,您的服務器代碼可用於根據發出請求的頁面域來過濾請求。您的服務器可以通過例如響應401(未授權)響應狀態)來拒絕請求,也可以通過返回Access-Control-Allow-Origin標頭,使其具有與Origin請求標頭中找到的值相同的值來響應請求。

但是,請注意,通過CORS輕鬆訪問您的系統是 - 安全方面 - 與使用某種形式的身份驗證限制訪問非常不同。在聲明其來源時,你依靠客戶表現良好,但這並非總是有效的假設。

+1

CORS是關於在客戶端放寬*同源策略*,而不是保護服務器端。儘管OP可能需要CORS,但仍然需要服務器解決方案。 –

+0

@MarcusAdams - 好點(我應該知道的更好!) – broofa

+0

更新爲偏執狂 – broofa

2

您需要將身份驗證添加到您的Web服務。因此,對每個方法的非常請求都將通過cookie中發送的令牌進行驗證。

對於該網站,這可以使用網站其餘部分使用的身份驗證Cookie。如果用戶必須登錄到移動應用程序,那麼您還需要對其進行身份驗證。

這將阻止任何人訪問您的網站或移動應用程序無法使用您的Web服務。

我也強烈建議使用TLS(SSL)保護您的Web服務和站點,以便通過HTTPS訪問所有內容。

+0

你有這樣的例子嗎?謝謝 –

+1

http:// www。codeproject.com/Articles/4398/Authentication-for-Web-Services-using-SOAP-headers – SilverlightFox