我们有一个带注册扩展的.NET 3.5应用程序.我们如何保护它免受DLL劫持攻击?
由于传统和设计问题,强大的命名/签名现在不是一种选择
如果您不知道DLL劫持是什么,请提供额外信息:
小智 6
我遇到了类似的问题,最终我写了自己的逻辑来验证dll。对我来说,我只是以LGPL方式使用了该dll(我无法修改该dll),但想确保我的应用程序使用的是真正的dll(而不是被劫持的dll)。
简单的解决方案:
更好的解决方案:
如果您有来自受信任CA的任何证书(如verisign),则可以使用该证书而不是使用RSA密钥值对。
这样,即使有人用破解的dll替换了您的dll,哈希也将不匹配,并且您的应用程序将知道劫持尝试。
这种方法可能比只给dll一个强名称更好,因为强名称验证可能会因运行而被禁用
SN -Vr HijackedAssembly
Run Code Online (Sandbox Code Playgroud)
希望这对您或想了解数字签名事物在内部如何工作的人有所帮助。