我一直在花时间在.NET Core和使用ServiceCollection对象的依赖注入模型上。
是否有任何方法可以保护已经添加到集合中的服务实现的完整性?
我想知道我添加的服务的原始实现在运行时的某个时候没有被修改或替换。
在安全性方面,如果我是一个知道自己在做什么并且具有远程代码执行漏洞的攻击者,那么我可以替换一个关键服务实现,并以持久化的形式进行隐藏。
在愚蠢的情况下,如果我有一个大型项目,我不希望去调试为什么出了问题才能发现开发人员会替换已被广泛使用的服务的实现。
有什么建议吗?也许有某种保护措施可以防止这种情况发生,或者根本就不必担心?
答案 0 :(得分:0)
您可以手动实现IServiceCollection
,定义一个类,并使用List<ServiceDescriptor>
来实现接口中声明的所有方法。
然后,修改可能更改注册表项值的方法,添加通知操作以确定值是否更改。