2016-05-16 103 views
2

如何防止對我的公共WCF soap服務的任何可能的CSRF攻擊?阻止對WCF服務的CSRF攻擊

我知道主要的解決方案是通過使用CSRF令牌,但我怎麼能實現呢?

希望有人給我的想法,或者至少告訴我,WCF不能被CSRF攻擊。

+0

WCF服務在瀏覽器中無法使用。因此,這種攻擊沒有發生。 –

+1

@TomRedfern:不是這樣的:https://msdn.microsoft.com/en-us/library/bb924552(v=vs.110).aspx – SilverlightFox

+0

@SilverlightFox - 我似乎會糾正! –

回答

3

是的,CSRF適用於WCF,如果您有enabled AJAX support for your service

緩解的一種快速而簡單的方法是設置檢查自定義標題,如X-Requested-With請求標題。如果未啓用CORS,則這些標題無法傳遞到跨域。

爲了進一步加強此解決方案,您還可以設置每個會話的令牌,然後將其傳遞到頭中。見this answer。這將減輕瀏覽器插件(如Flash和Silverlight)中的漏洞,前者之前曾遭受過允許跨域設置任意頭部的錯誤,否則應該不允許該錯誤。

+0

謝謝,但是如果我不使用AspNetCompatibility模式,並且我不需要會話,我該如何應用每個會話的令牌? –

+0

請問您能否通過您的應用程序和體系結構的更多細節更新您的問題?例如什麼是你的服務的客戶端,因爲非web瀏覽器不需要CSRF保護,並且如果不使用會話,那麼爲什麼你需要CSRF保護? – SilverlightFox

+0

實際上,我的服務的想法是公開分隔的服務,請求跨越不同的域,所以每個應用程序都會要求通過Soap Header可能發送的用戶名和密碼連接到此服務。所以沒有會議在這裏適用。 –