防止对我的 wcf 服务的跨域请求

Posted

技术标签:

【中文标题】防止对我的 wcf 服务的跨域请求【英文标题】:prevent cross domain requests to my wcf services 【发布时间】:2011-09-27 09:44:30 【问题描述】:

我使用 wcf ui 服务在我的 javacsript (jquery) 和服务器端代码之间进行通信。我发现这项工作很有效。

但是我想让它更安全。我可以设置 wcf 以使对服务的请求只能从同一域内发出,以防止外部客户端向我的服务发出此类请求。

例如,我的服务操作 url 是http://www.website.com/Service.svc/GetProducts。我想设置 wcf 以便只允许来自 http://www.website.com 中的页面的请求。我认为这是跨域 wcf 请求的领域,但在设置时需要一些帮助。帮助会很棒。

【问题讨论】:

【参考方案1】:

如果您的服务暴露在网络上,这根本不可能。

如果您的服务的某些内容不够安全,您应该考虑解决该问题 - 而不是试图阻止人们提出请求。

任何人都可以随时使用 Fiddler、Charles 等调试代理或 WireShark 等工具将他们想要的任何数据发送到您的服务 - 包括通过浏览器发出的请求的完整重放. (包括referer http headers等)。

如果您的情况允许,也许您可​​以考虑使用 *** 设备或类似的东西,并限制您网络内的用户(或通过 *** 进入)的访问。这样,您的服务安全性较少担心....然而众所周知,“内部攻击者”同样普遍,如果不是更多的话,比外部的...所以不要太舒服。

让我在传球时也阻止这个争论,当我在它的时候;有人可能会建议浏览器已经阻止了这样的跨站点脚本。是的,这是真的。但通常是其他应用程序的开发人员添加客户端脚本来调用这些服务 - 他/她可以轻松地在服务器端发出请求并将结果代理到客户端。

【讨论】:

以上是关于防止对我的 wcf 服务的跨域请求的主要内容,如果未能解决你的问题,请参考以下文章

验证来自 Javascript 的跨域请求

CORS - 没有 JSONP 的跨域 AJAX 通过允许服务器上的 Origin

Ajax中的跨域请求(跨源请求)

解决携带身份信息的跨域请求

跨域 jQuery Ajax 请求和 WCF REST 服务

允许 Android WebView 的跨域请求