据我所知,将一个方法标记为不安全将禁用对该代码的一些 CLR 检查,但这对系统的其余部分是否安全有任何影响,除了 DLL/EXE 可以不在不受信任的环境中运行。
特别是,
- 是否有任何安全检查因为标记为不安全而无法在完整的 dll 上运行?
- 如果一个 DLL 被标记为不安全,但标记为不安全的方法是 实际上没有被调用,这是否与 DLL 被标记为 安全吗?
- 将不安全代码保存在 单独的 DLL?
我在 64 位窗口上重绘嵌套控件时遇到问题,详见 here一种解决方案(似乎有效的一种)涉及不安全的代码,我想了解添加此代码对我的项目的影响。
最佳答案
不安全代码能够破坏托管堆。因此,在同一进程 中运行的任何内容都可能受到影响。
这包括同一进程中的所有其他库和可能的所有其他AppDomains。
更新
更新 2
Is unsafe code that is written diligently bad?
没有。 .NET 框架本身有吨 不安全代码。示例很多,但这里是 System.String
中的一个:
public static unsafe string Copy(string str)
{
if (str == null)
{
throw new ArgumentNullException("str");
}
int length = str.Length;
string str2 = FastAllocateString(length);
fixed (char* chRef = &str2.m_firstChar)
{
fixed (char* chRef2 = &str.m_firstChar)
{
wstrcpyPtrAligned(chRef, chRef2, length);
}
}
return str2;
}
关于c# - 不安全代码对安全代码有影响吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5677346/