如何限制Silverlight NetTcp连接的域?

时间:2016-03-23 23:45:47

标签: security silverlight tcp clientaccesspolicy.xml

我正在为使用TCP连接进行通信的本地托管的Silverlight组件托管clientaccesspolicy.xml。它有效,但我试图收紧允许的域名,我找不到文档来指明如何为TCP连接指定这些限制。

这是可能的吗?如果我应该如何指定这些限制?

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
    <cross-domain-access>
        <policy>
            <allow-from http-request-headers="*">
                <domain uri="*"/>
            </allow-from>
            <grant-to>
                <socket-resource port="4502-4534" protocol="tcp" />
            </grant-to>
        </policy>
    </cross-domain-access>
</access-policy>

1 个答案:

答案 0 :(得分:0)

Basics of the Security Policy System

  

使用套接字类的另一个限制是   允许网络应用程序使用的目标端口范围   connect to必须在4502-4534范围内。这是唯一的   Silverlight连接允许的目标端口   应用程序使用套接字。如果目标端口不在此端口内   范围,尝试连接将失败。目标是可能的   服务器从此受限范围接收端口上的连接   将其重定向到另一个端口(例如,一个众所周知的端口)if   这是支持特定现有应用程序协议所必需的。

我认为缩小端口范围会限制可用的tcp套接字。他们显示Example Policy File for Sockets here

<?xml version="1.0" encoding ="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from>
        <domain uri="file:///" />
      </allow-from>
      <grant-to>
        <socket-resource port="4502-4506" protocol="tcp" />
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

引用MS的以下文档

To use a clientaccesspolicy.xml file to allow cross-domain access

  

要启用通过TCP套接字访问的服务,请添加   <socket-resource port="4502" protocol="tcp" /> <grant-to>   element,其中4502是托管服务的端口值。

域示例

此策略文件仅接受来自指定的域和方案的连接。此策略文件指定特定的请求标头,并指定可以访问的资源。

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="MyHeader, X-API-*">      
        <domain uri="http://electronics.fabrikam.com"/>
        <domain uri="http://books.fabrikam.com"/>
        <domain uri="http://contoso.com:8080"/>
      </allow-from>      
      <grant-to>      
        <socket-resource port="4502-4506" protocol="tcp" />
      </grant-to>      
    </policy>
  </cross-domain-access>
</access-policy>

对于上述策略,允许下面列出的Silverlight HTTP应用程序访问列出的端口:

http://electronics.fabrikam.com/sample/app.xap
http://books.fabrikam.com/web/sample/app.html
http://contoso.com:8080/sample/app.xap

对于上述政策,不允许下面列出的Silverlight应用程序访问列出的端口:

http://electronics.fabrikam.com:8080/sample/app.xap
http://electronics.fabrikam.com:8080/sample/app.xap
http://bar.com/sample/app.xaml
https://bar.com/sample/app.html

可以发送以下HTTP请求标头(除了始终允许的Content-Type标头):

MyHeader
all headers starting with X-API-

资源Network Security Access Restrictions in Silverlight