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

时间:2017-03-07 20:22:13

标签: c# asp.net asp.net-web-api reference asp.net-core

我正在学习本教程,以便熟悉ASP.NET核心和其他相关技术。 https://www.codeproject.com/articles/997216/restful-day-sharp-resolve-dependency-of-dependenci

他提到,出于安全原因,引用DataModel项目中的WebApi并不是一个好习惯。所以我确实关注了他,我很惊讶,我仍然可以通过DataModel间接引用我WebApi项目中Services上的课程。

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

https://www.codeproject.com/KB/aspnet/990492/image028.jpg

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

WebApi's references

我还是.NET的新手,想知道这是否是预期的行为,否则会导致任何安全风险。

1 个答案:

答案 0 :(得分:2)

  

这是预期的行为吗?

是。这就是所谓的transitive dependency。您的项目可以引用其依赖项引用的包,就好像项目依赖于这些包本身。这是预期的行为;见:Transitive references in .Net Core 1.1

  

这会导致任何安全风险吗?

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

  

我应该依赖传递依赖吗?

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