C# 我可以访问未直接引用的库

C# 我可以访问未直接引用的库,c#,asp.net,asp.net-web-api,reference,asp.net-core,C#,Asp.net,Asp.net Web Api,Reference,Asp.net Core,为了熟悉ASP.NET核心和其他相关技术,我一直在学习本教程。 他提到,出于安全原因,在WebApi项目中引用DataModel不是一个好的做法。所以我确实跟随了他,令我惊讶的是,我仍然可以通过服务间接引用项目中数据模型上的类 下面的屏幕截图将更清楚地显示项目之间的关系(来自教程) 以及我在下面的WebApi项目中的实际参考资料 我对.NET还是一个新手,我想知道这是否是一种预期行为,或者这是否会导致任何安全风险 这是预期的行为吗 是。这就是我们所知道的。您的项目可以引用其依赖项引用的包,

为了熟悉ASP.NET核心和其他相关技术,我一直在学习本教程。

他提到,出于安全原因,在
WebApi
项目中引用
DataModel
不是一个好的做法。所以我确实跟随了他,令我惊讶的是,我仍然可以通过
服务
间接引用
项目中
数据模型
上的类

下面的屏幕截图将更清楚地显示项目之间的关系(来自教程)

以及我在下面的
WebApi
项目中的实际参考资料

我对.NET还是一个新手,我想知道这是否是一种预期行为,或者这是否会导致任何安全风险

这是预期的行为吗

是。这就是我们所知道的。您的项目可以引用其依赖项引用的包,就像项目依赖于这些包本身一样。这是预期的行为;见:

这会导致任何安全风险吗

不太可能。您不应该依赖包依赖规则之类的东西来保证代码的安全。相反,请确保编写代码时考虑到安全性—始终清理用户输入、使用参数化查询、在服务器端强制授权,等等

我应该依赖传递依赖项吗


您的应用程序/库不应该依赖于可传递的依赖项,因为它们可能会在没有任何警告的情况下消失(如果您的某个依赖项更改了其依赖项)。相反,要明确,并将代码所依赖的任何包转化为适当的依赖项。

这肯定回答了我的问题,尽管我仍然心不在焉,但我想我应该如何看待它,因为它看起来有些混乱?无论如何,谢谢你的回答!现在我知道了用于此行为的“传递性”术语,我将进一步了解@劳伦斯:我同意,它本身可能不是不安全的,但它是混乱的。我会用更多的颜色更新我的答案。很高兴这有帮助。:)你的应用程序/库不应该依赖于可传递的依赖关系问题是Visual Studio会很乐意建议使用可传递的依赖关系类型,而不会警告它们是在间接依赖关系中定义的,你无法知道这一点。您可以通过注意到文件顶部出现了一个使用
的“不正确的”
(也就是说,除非该类型位于已使用
-ed命名空间的
的“扩展名”中,否则您就倒霉了)。