【问题标题】:How do I restrict domains for Silverlight NetTcp connections?如何限制 Silverlight NetTcp 连接的域?
【发布时间】:2016-03-24 10:02:02
【问题描述】:

我正在为本地托管的 Silverlight 组件托管一个 clientaccesspolicy.xml,该组件使用 TCP 连接进行通信。它可以工作,但我正在尝试收紧允许的域,但我找不到说明如何为 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>

【问题讨论】:

    标签: security silverlight tcp clientaccesspolicy.xml


    【解决方案1】:

    Basics of the Security Policy System

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

    我认为缩小端口范围会限制可用的 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 套接字进行访问,请添加 &lt;socket-resource port="4502" protocol="tcp" /&gt;&lt;grant-to&gt; 元素,其中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

    【讨论】:

    • 不幸的是,使用&lt;domain uri="file:///" /&gt; 或其变体似乎也不起作用,&lt;domain uri="net.tcp:///" /&gt; 也不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2017-12-16
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多