gpt4 book ai didi

.net - 可以使 ASP.NET ScriptManager 与 Windows FIPS 安全策略一起使用吗?

转载 作者:行者123 更新时间:2023-12-04 02:10:41 33 4
gpt4 key购买 nike

如果在 Windows 中启用“使用 FIPS 兼容算法进行加密、散列和签名”安全策略选项,则尝试使用 .NET Framework 中的许多加密类将导致 InvalidOperationException。默认情况下,ASP.NET 使用 AES 来加密 ViewState blob,因此它失败了。您可以通过向 web.config 添加这样的键来解决此问题:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

这涵盖了基本的 ASP.NET 使用。我的问题是:我有一个大型、复杂的 ASP.NET Web 应用程序,它大量使用 ScriptManagers(ASP.NET AJAX 的基础)并且需要由必须启用此 FIPS 策略设置的政府客户部署。任何带有 ScriptManager 的 ASP.NET 页面都会引发此异常:
[InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.]
System.Security.Cryptography.SHA1Managed..ctor() +3607454
System.Security.Policy.Hash.get_SHA1() +45
System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfoInternal(Assembly assembly) +85
System.Web.Handlers.ScriptResourceHandler.GetAssemblyInfo(Assembly assembly) +99
System.Web.Handlers.RuntimeScriptResourceHandler.GetScriptResourceUrlImpl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +525
System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(List`1 assemblyResourceLists, Boolean zip, Boolean notifyScriptLoaded) +910
System.Web.Handlers.RuntimeScriptResourceHandler.System.Web.Handlers.IScriptResourceHandler.GetScriptResourceUrl(Assembly assembly, String resourceName, CultureInfo culture, Boolean zip, Boolean notifyScriptLoaded) +193
System.Web.UI.ScriptReference.GetUrlFromName(ScriptManager scriptManager, IControl scriptManagerControl, Boolean zip) +306
System.Web.UI.ScriptManager.RegisterUniqueScripts(List`1 uniqueScripts) +169
System.Web.UI.ScriptManager.RegisterScripts() +407
System.Web.UI.ScriptManager.OnPagePreRenderComplete(Object sender, EventArgs e) +200
System.Web.UI.Page.OnPreRenderComplete(EventArgs e) +11041982
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3672

甚至添加 <enforceFIPSPolicy enabled="false"/> web.config 的元素无法解决异常。

有没有办法配置 ASP.NET,以便 ScriptManager 可以与 Windows FIPS 安全策略一起使用?

最佳答案

来自 Microsoft 的更新:修补程序可从 http://code.msdn.microsoft.com/KB981119 获得

答案是您不能将 ScriptManager 与启用 FIPS 的服务器一起使用。 :(

System.Web.Handlers.ScriptResourceHandler 类的静态方法 GetAssemblyInfo 创建一个不符合 FIPS 的哈希对象。这在 .Net 3.5 SP1 和 .Net 3.51 之间发生了变化

(System.Web.Extensions 版本 3.5.30729.196)
XP/2003/2008 .Net 3.5 SP1

private static Pair<AssemblyName, DateTime> GetAssemblyInfoInternal(Assembly assembly)
{
return new Pair<AssemblyName, DateTime>(new AssemblyName(assembly.FullName), GetLastWriteTime(assembly));
}

(System.Web.Extensions 版本 3.5.30729.4926)
Win7/2008R2 .Net 3.51
private static Pair<AssemblyName, string> GetAssemblyInfoInternal(Assembly assembly)
{
AssemblyName first = new AssemblyName(assembly.FullName);
return new Pair<AssemblyName, string>(first, Convert.ToBase64String(new Hash(assembly).SHA1));
}

显然,从时间戳到散列的更改破坏了 FIPS 合规性。我们已经与 Microsoft 建立了一个支持案例。

关于.net - 可以使 ASP.NET ScriptManager 与 Windows FIPS 安全策略一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294398/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com