WCF跨越边界正确实现方式
创始人
2024-06-23 12:30:40
0

WCF的出现,为开发人员带来了不一样的使用体验。它可以为我们提供一个依赖性较强,可跨平台的解决方案。那么今天,我们就可以为大家详细了解一下WCF跨越边界的相关实现方法,希望能给大家带来一些帮助。#t#

使用WCF跨越边界进行通信的时候需要预防几种类型的安全漏洞,它们可被用于违法利用 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 2.0 支持两种不同的机制供服务选择WCF跨越边界访问:

在承载服务的域的根目录中放置一个 clientaccesspolicy.xml 文件,以配置服务允许跨域访问。

在承载服务的域的根目录中放置一个有效的 crossdomain.xml 文件。该文件必须将整个域标记为 public。Silverlight 支持 crossdomain.xml 架构的一个子集。

使用 clientaccesspolicy.xml 文件来允许WCF跨越边界访问
构建允许 Silverlight 客户端访问的服务。有关 有关 如何进行此操作的更多信息,请参见如何:为 Silverlight 客户端构建服务。

创建允许访问该服务的 clientaccesspolicy.xml 文件。以下配置允许从任何其他域访问当前域上的所有资源。

  1. < ?xml version="1.0" encoding="utf-8"?> 
  2. < access-policy> 
  3. < cross-domain-access> 
  4. < policy> 
  5. < allow-from http-request-headers="*"> 
  6. < domain uri="*"/> 
  7. < /allow-from> 
  8. < grant-to> 
  9. < resource path="/" include-subpaths="true"/> 
  10. < /grant-to> 
  11. < /policy> 
  12. < /cross-domain-access> 
  13. < /access-policy> 

将 clientaccesspolicy.xml 文件保存到承载该服务的域的根目录中。例如,如果该服务在 http://fabrikam.com 上承载,则文件必须位于 http://fabrikam.com/clientaccesspolicy.xml。

标头属性的有效值包括允许所有未列入黑名单的标头的通配符 (*),以及允许标头的逗号分隔列表。这些允许的标头可以使用通配符后缀,例如“X-CUSTOM-*”。

或者,如果只允许从其他域中的一个进行访问(例如 http://contoso.com),clientaccesspolicy.xml 应当包含以下配置。

  1. < ?xml version="1.0" encoding="utf-8"?> 
  2. < access-policy> 
  3. < cross-domain-access> 
  4. < policy> 
  5. < allow-from http-request-headers="*"> 
  6. < domain uri="http://contoso.com"/> 
  7. < /allow-from> 
  8. < grant-to> 
  9. < resource path="/" include-subpaths="true"/> 
  10. < /grant-to> 
  11. < /policy> 
  12. < /cross-domain-access> 
  13. < /access-policy> 

通过从其他域调用服务来测试是否已启用访问。

使用 crossdomain.xml 文件来允许跨域访问

构建允许 Silverlight 客户端访问的服务。

创建包含以下配置的 crossdomain.xml 文件。必须将该文件配置为允许从任何其他域访问服务,否则 Silverlight 2.0 将无法识别它。

  1. < ?xml version="1.0"?> 
  2. < !DOCTYPE cross-domain-policy SYSTEM "http://
    www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
  3. < cross-domain-policy> 
  4. < allow-http-request-headers-from domain="*" headers="*"/> 
  5. < /cross-domain-policy> 

将 crossdomain.xml 文件保存在承载服务的域的根目录中。例如,如果该服务在 http://fabrikam.com 上承载,则文件必须位于 http://fabrikam.com/crossdomain.xml。

通过从其他域调用服务来测试是否已允许访问该服务。

以上就是我们为大家介绍的WCF跨越边界的处理方法的全部内容。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...