改进了 ASP.NET 视图状态安全性和密钥管理

适用范围:no-img-132013 yes-img-162016 yes-img-192019 yes-img-seSubscription Edition no-img-sopSharePoint in Microsoft 365

注意

默认情况下,SharePoint Server 订阅版会加密machineKeyweb.config文件的 部分。 这可以防止攻击者读取 ASP.NET 视图状态加密和验证密钥,即使他们获得了这些文件 web.config 的访问权限。

如果运行的是 SharePoint Server 订阅版 或 SharePoint Server 2016/2019 版本,则平台通过定期更新计算机加密密钥来保护敏感数据。 此过程是使用 PowerShell cmdlet 手动完成的,后者会更新 Web 应用程序中的解密和验证密钥。 此安全做法有助于缓解密钥泄露时的潜在漏洞。 有关详细信息,请参阅 PowerShell cmdlet

从 SharePoint Server 订阅版 版本 25H1 和 SharePoint Server 2016 和 2019 的 2025 年 9 月公共更新开始,无需手动干预即可自动更新计算机密钥。 有关详细信息,请参阅 自动计算机密钥轮换

自动计算机密钥轮换

自动计算机密钥轮换功能旨在通过自动更新计算机密钥来提高安全性,从而最大程度地降低密钥泄露的风险。 此功能可确保计算机密钥的无缝自动轮换,同时在密钥轮换期间保持 SharePoint 服务的高可用性和可靠性。

此功能包含密钥管理服务,该服务使用名为“ 计算机密钥轮换作业”的计时器作业来处理计算机密钥的存储、检索和分发。 默认情况下,计时器作业配置为在每周的星期日自动运行。

如果需要手动更新计算机密钥,可以通过执行以下步骤来触发计算机密钥轮换计时器作业:

  1. 导航到 管理中心 站点。
  2. 转到 “监视 ”-“>查看作业定义”。
  3. 搜索 “计算机密钥轮换作业 ”,然后选择“ 立即运行”。

作业完成后,服务器场的管理员不应有明显的更改。

使用以下新的 PowerShell cmdlet,可以更改 SharePoint Web 应用程序的 ASP.NET 视图状态解密和验证密钥,从而允许在场中轮换这些密钥。

PowerShell cmdlet

  1. Set-SPMachineKey

    配置 Web 应用程序的 ASP.NET 视图状态解密和验证密钥。

    语法

    Set-SPMachineKey -WebApplication <SPWebApplicationPipeBind> [-DecryptionKey <String>] [-ValidationKey <String>] [-Local] [<CommonParameters>]
    

    参数

    • -WebApplication <SPWebApplicationPipeBind>

      指定 Web 应用程序的名称、URL 或 GUID。

    • -DecryptionKey [<String>]

      指定新的 ASP.NET 视图状态解密密钥。 密钥应表示为 0-9 和 A-F) 的 64 个字符长十六进制字符串 (。

      如果未指定此参数,则会生成并使用随机解密密钥。

    • -ValidationKey [<String>]

      指定新的 ASP.NET 视图状态验证密钥。 密钥应表示为 0-9 和 A-F) 的 64 个字符长十六进制字符串 (。

      如果未指定此参数,则会生成并使用随机验证密钥。

    • -Local

      仅将新的解密和验证密钥部署到本地服务器。 场中的其他服务器继续使用以前的解密和验证密钥。 如果在服务器场中的每个服务器上未同步这些密钥,则跨服务器场中的多台服务器进行负载均衡的 Web 会话将失败。 使用 Update-SPMachineKey cmdlet 将密钥部署到场中的其他服务器。

      如果未指定此参数,则会将新的解密和验证密钥部署到场中的所有服务器。

  2. Update-SPMachineKey

    将 ASP.NET 视图状态解密和验证密钥部署到场中的服务器。

    语法

    Update-SPMachineKey -WebApplication <SPWebApplicationPipeBind> [-Local] [<CommonParameters>]
    

    参数

    • -WebApplication <SPWebApplicationPipeBind>

      指定 Web 应用程序的名称、URL 或 GUID。

    • -Local

      仅将新的解密和验证密钥部署到本地服务器。 场中的其他服务器继续使用以前的解密和验证密钥。 如果在服务器场中的每个服务器上未同步这些密钥,则跨服务器场中的多台服务器进行负载均衡的 Web 会话将失败。

      如果未指定此参数,则解密和验证密钥将部署到场中的所有服务器。