- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
BCL 和 CLR(以后只使用 CLR)中的所有 .NET 程序集都是 strongly named and digitally signed .提供数字证书是为了确保程序集未被篡改或更换的信任度。但是,.NET 似乎从未检查过数字签名(它可以检查强名称为 Hans pointed out)。
检查程序集负载存在缺陷是有道理的,因为修改后的 CLR 可能会伪造答案。我的想法是,从 .NET1 的角度来看,唯一要检查的安全位置是在框架的启动时作为引导框架的非托管代码的一部分。最大的缺点是性能影响。
我是从开发人员的角度来看这个问题的,换句话说,我怎么知道我的应用程序没有受到已经拥有的 CLR2 的危害,或者换句话说,应用程序是否可以信任 CLR?
所以我的问题是为什么 .NET 不验证 CLR?是因为性能影响还是其他原因?
1. 我专注于 .NET,可能会弄乱 Windows 从而打破这个想法,但如果您已经拥有 Windows,您就不需要拥有 .NET。
2. 例如,用户在应用程序中输入密码,密码存储在 SecureString 中,但 BCL 被破坏,因此攻击者现在可以获取该信息。它允许他们捕获其他信息。我意识到如果攻击者可以更换 CLR,他也可以在机器上放置一个键盘记录器,但是(希望)可以用一个像样的安全工具检测到。还有很多其他的方法可以解决这个问题,核心是我如何知道 SecureString 是否已更改。
最佳答案
这在 .NET 3.5 SP1 中已更改,旨在作为 startup perf improvement对于完全信任运行的应用程序,让它们与不进行此类检查的 native 程序相同。验证强名称的成本很高,而且由于 DLL 数量众多,托管程序的冷启动往往很慢。您可以使用 .config 文件重新打开它:
<configuration>
<runtime>
<bypassTrustedAppStrongNames enabled="false"/>
</runtime>
</configuration>
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"AllowStrongNameBypass"=dword:00000000
关于.net - 为什么 .NET 不验证 BCL/CLR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7385084/
.NET 基类库中是否有完整构建器模式的示例?我正在寻找具有实际导演和多个具体 build 者的东西。 最佳答案 我远非这方面的专家,但我认为 DbCommandBuilder及其继承类( OdbcC
在 F# 中,您可以定义一个 first功能如下: let first (x, y) = x 你可以这样称呼它: first (1, 2) 您还可以根据 BCL Tuple 定义相同的函数类型: le
4.5 霍夫曼压缩 Syntax: outsize = Huffman_Compress(in,out,insize) outsize Size of output buffer after comp
如果我有一个类,例如 T1,我想知道它正在使用 BCL 中的哪些类,我该怎么做? 我想到了这个: T1.GetType().GetMethods().Where(x => x.DeclaringTy
在过去,我们可以使用大括号方便地初始化可变集合,如下例所示: var myDictionary = new Dictionary {{"hello", 0m}, {"world", 1m}}; 是否有
代码契约工作得很好,直到你必须为来自框架代码的结果添加无数的Contract.Assume(...)。例如,MemoryStream.ToArray() 从不返回 null 数组,正如我在 Refle
我使用 Microsoft.Bcl.Async package在一个项目中,并且该项目被另一个不使用异步功能的项目引用。 现在我在编译解决方案(或仅编译第二个项目)时收到此错误警告: The prim
好像是 System.Diagnostics.Debug , 和 System.Diagnostics.Trace 大致相同,但值得注意的异常(exception)是 Debug 用法是在发布配置中编
以下是 FSI 中的内容: > System.Math.Round(0.2916, 2);; val it : float = 0.29 > it * 100.;; val it : float =
一些 .net 理论问题:哪些库实际上是标准化的?我知道有一个通用类型系统,它指定了诸如 32 位整数和所有这些低级信息之类的东西,但我对通用语言规范和基类库的状态/关系感到困惑。 系统中有一些基本类
我需要清楚地了解类库。 Base Class Libraries 和 Framework Class Libraries 都属于命名空间——我的意思是我们可以称它们都是命名空间吗?如果不是,我们可以将
比如 Point、Size 等值类型。 我还听说 .NET 中的字符串并非真正不可变。 F# 是否使用这些或它们的替代不可变版本? 如果它使用标准的可变 BCL 类型,这不会损害 F# 在编译和运行时
有什么方法可以知道 .NET 预定义方法的确切时间复杂度。就像我想知道 的复杂性一样 String.Contains() 或 Hashtable.ContainsKey() Microsoft 是否
Microsoft.Bcl.Async 使开发人员能够在没有 .NET Framework 4.5 的情况下使用 async/await 关键字,他们应该以使用它们为目标。 太好了,这要感谢 Micr
我清楚地记得 C# 的 SSE 增强向量的发布,我知道我们不久前才对它们进行了一些测试。现在,它们似乎从互联网上消失了。 2014 年的 NuGet 包仍然存在,但已除名: The owner has
什么是 Microsoft.Bcl.Async 及其用途? 我读过the package page那: This package enables Visual Studio 2012 projects
为什么 BCL 中没有 AutoResetEventSlim 类? 可以用ManualResetEventSlim模拟吗? 最佳答案 ManualResetEvent 和 ManualResetEve
为什么 .NET 基类库没有 CPR 类? 最佳答案 Eric Lippert 对“为什么未实现功能 X”有最好的解释(我认为他知道一两件关于为什么或为什么没有用语言实现的事情) I am asked
BCL 和 CLR(以后只使用 CLR)中的所有 .NET 程序集都是 strongly named and digitally signed .提供数字证书是为了确保程序集未被篡改或更换的信任度。但
我想调试 [MethodImpl(MethodImplOptions.InternalCall)] BCL 方法的实现,该方法可能是用 C++ 实现的。 (在本例中,我正在查看 System.Stri
我是一名优秀的程序员,十分优秀!