Mic*_*wal 7 .net c# strongname signing pfx
我试图理解.NET中强命名程序集的意义.在谷歌上搜索它时,我注意到它无处不在,它确保代码来自我并且没有被篡改.所以我测试了它.我创建了一个简单的DLL,用新创建的PFX密钥对其进行签名,并由我的WPF应用程序引用它.好吧,一切正常.当我用另一个PFX文件编译DLL时,我收到一个错误,所以没关系.
但是,当我通过ildasm反编译DLL时,修改它并通过ilasm重新编译它,WPF应用程序仍然可以正常工作而没有任何错误.因此,我篡改了强名称的DLL并使用旧的DLL手动更改它,应用程序仍然可以使用被篡改的DLL.PublicKeyToken是一样的.那么强命名的意义何在?它不能确保代码没有被篡改,因为我强烈命名它.
它用于检查篡改,但是在应用程序启动时检查每个强名称签名的程序集的开销太高,因此Microsoft在几年前默认禁用了此行为(回到".NET Framework 3.5版Service Pack"时) 1"被释放了".
这称为强名称旁路功能.
您可以通过在其".config"文件中添加以下内容来禁用特定应用程序的功能(即,使Windows检查篡改):
<configuration>
<runtime>
<bypassTrustedAppStrongNames enabled="false" />
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
您可以通过编辑注册表为所有应用程序启用强名称检查(这显然不是一个可行的解决方案!).
有关更多详细信息,请参阅以下页面:
现在的建议是,如果要防止代码被篡改,请为可执行文件和DLL使用完整的代码签名证书.
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |