Excel Services 最佳做法

上次修改时间: 2010年4月14日

适用范围: SharePoint Server 2010

本文内容
减轻威胁
Excel Services 用户定义函数 (UDF)
常规

本主题包含一个有关处理 Excel Services 的最佳做法建议的列表。

减轻威胁

匿名访问和信息泄漏

利用以下设置组合,匿名用户可访问进程帐户可访问的共享中的任何文件。因此,建议不要使用以下设置组合,因为这可能会导致信息泄漏:

  • 已打开对 Microsoft SharePoint Foundation 的匿名访问。

  • 具有一个 UNC 信任的位置并且已打开"进程帐户"。

备注

"进程帐户"是一个 Excel Services 的全局设置,它会影响所有受信任的位置。

查看"进程帐户"选项

  1. 在"开始"菜单上单击"所有程序"。

  2. 指向"Microsoft SharePoint 2010 产品",然后单击"SharePoint 管理中心"。

  3. 在"应用程序管理"下单击"管理服务应用程序"。

  4. 在"管理服务应用程序"页上单击"Excel Services 应用程序"。

  5. 在"Excel Services 应用程序"页上单击"全局设置"。

  6. 在"安全"部分,查看"文件访问方式"下的"进程帐户"选项。

拒绝服务攻击

在针对 Web 服务的拒绝服务攻击中,攻击者将生成针对 Web 服务的非常大的单独请求。目的在于试图利用一个或多个 Web 服务输入值的限制。

建议使用 Microsoft Internet Information Services (IIS) 设置来设置 Web 服务的最大请求大小。

使用 system.web 元素中的 httpRuntime 元素中的 maxRequestLength 属性可阻止由于用户将大型文件张贴到服务器上而引起的拒绝服务攻击。默认大小为 4096 KB (4 MB)。

有关详细信息,请参阅<httpRuntime> Element<maxRequestLength> Element

调用应用程序和 Web 服务计算机之间的探查

如果调用应用程序和 Excel Web Services 部署到不同的计算机,则攻击者可以侦听调用应用程序和 Web 服务之间的数据传输的网络通信。此威胁也称作"探查"或"偷听"。

为了帮助减轻此威胁,建议您:

  • 使用安全套接字层 (SSL) 来设置安全通道,以保护客户端和服务器之间的数据传输。SSL 协议有助于保护数据,阻止可物理访问网络的任何人对其进行数据包探查。

  • 如果使用 Excel Web Services 的自定义应用程序正在受限制的网络中运行(例如,如果将 Excel Web Services 部署到企业内部的 Web 前端计算机上),则将物理保护相关网络。

有关详细信息,请参阅Securing Your NetworkSOAP 安全(该链接可能指向英文页面)

有关 Excel Services 拓扑、可伸缩性、性能和安全的信息,请参阅 Microsoft SharePoint Server 2010 TechCenter。

欺骗

建议您使用 SSL 来帮助减轻 Web 服务 Internet 协议 (IP) 地址和端口被拦截所构成的威胁,还可帮助阻止攻击者接收请求并代表 Web 服务进行答复。

将 SSL 证书与少数属性进行匹配,这些属性中的一个属性是从其中传入消息的 IP 地址。如果攻击者不具有 Web 服务 SSL 证书,则无法欺骗 IP 地址。

有关详细信息,请参阅Securing Your Network

Excel Services 用户定义函数 (UDF)

强名称依赖项

在某些情况下,用户定义函数 (UDF) 程序集依赖于随其一起部署的其他程序集。如果这些从属 DLL 位于全局程序集缓存中或位于 UDF 程序集所在的文件夹中,则它们加载成功。

但在后一种情况下,如果 Excel Calculation Services 已加载具有同一名称的另一个程序集,则加载可能会失败。(导致失败的原因为,未对程序集进行强命名或已部署并加载具有相同名称的另一个版本。)

考虑下面的具有以下目录结构的方案:

  1. C:\Udfs\Udf01

    Udf01 文件夹包含:

    • Udf01.dll

    • dependent.dll(未强命名)

    Udf01.dll 文件依赖于 dependent.dll 文件。

  2. C:\Udfs\Udf02

    Udf02 文件夹包含:

    • Udf02.dll(依赖于 Interop.dll)

    • dependent.dll(未进行强命名)

    Udf02.dll 文件依赖于 dependent.dll 文件。Udf01.dll 的依赖项和 Udf02.dll 的依赖项共享同一名称。但 Udf02.dll 的 dependent.dll 文件与 Udf01.dll 的 dependent.dll 文件不同。

假定下面的流程:

  1. Udf01.dll 是要加载的第一个 DLL。Excel Calculation Services 将查找 dependent.dll 并加载 Udf01.dll 的依赖项(在此示例中为 dependent.dll)。

  2. Udf02.dll 在 Udf01.dll 之后加载。Excel Calculation Services 发现 Udf02.dll 依赖于 dependent.dll。但已加载名为"dependent.dll"的 DLL。因此,将不会加载 Udf02.dll 的 dependent.dll,并将当前已加载的 dependent.dll 文件用作依赖项。

因此,不会将对象(在此示例下,为 Udf02.dll 所需的 dependent.dll)加载到内存中。

为避免发生名称冲突,建议您对依赖项进行强命名,并对它们进行唯一命名。

常规

为托管代码的 DLL 命名

若要确保程序集名称是唯一的,请按照Namespace Naming Guidelines中所述使用完全限定类名。

例如,使用 CompanyName.Hierarchichal.Namespace.ClassName 而非 Namespace.ClassName。

请参阅

任务

如何:信任一个位置

概念

Excel Services 体系结构

访问 SOAP API

Excel Services 警报

Excel Services 已知问题和提示

Excel Services 博客、论坛和资源