我可以访问没有直接
问题描述:
引用的库我下面这个教程对我来说,熟悉ASP.NET核及其他相关技术。 https://www.codeproject.com/articles/997216/restful-day-sharp-resolve-dependency-of-dependenci我可以访问没有直接
他提到,引用DataModel
在WebApi
项目是不是出于安全原因,一个很好的做法。所以,我没有跟他和我的惊喜,我仍然可以只是通过Services
间接引用它的访问类的DataModel
我WebApi
项目。
下面的屏幕截图将显示项目的关系是(从教程)更加清晰。
https://www.codeproject.com/KB/aspnet/990492/image028.jpg
而且在我的下面WebApi
的项目我的实际引用。
我还是很新的.NET和想知道这是否是预期的行为或者这可能会导致任何安全隐患。
答
这是预期的行为?
是的。这就是所谓的transitive dependency。您的项目可以引用其依赖项引用的包,就好像该项目本身依赖于这些包。这是预期的行为;请参阅:Transitive references in .Net Core 1.1
这会导致任何安全风险吗?
不可能。您不应该依赖软件包依赖关系规则来保证您的代码安全。相反,请确保您的代码在编写时考虑到安全性 - 始终清理用户输入,使用参数化查询,在服务器端强制执行授权等等。
我应该依靠传递依赖?
您的应用程序/库不应该依赖传递依赖,因为他们可以在你消失了,没有任何警告(如果你的依赖关系中的一个改变其依赖)。相反,请明确指出您的代码需要依赖的任何包到适当的依赖项中。
这绝对回答了我的问题,尽管我仍然半心半意,我应该如何看待这个问题,因为它看起来很不错,我猜很乱?无论如何,谢谢你的回答!现在我会更多地了解我知道用于此行为的“传递”术语。 :) – Lawrence
@劳伦斯我同意,它可能不是_insecure_本身,但它很混乱。我会用更多的颜色更新我的答案。很高兴它有帮助。 :) –
_您的应用程序/库不应该依赖传递性依赖关系_问题是Visual Studio会高兴地建议使用传递性依赖性类型,而没有任何警告说它们是在间接依赖项中定义的,您无法知道这一点。你应该意识到你正在做的是通过注意到在文件顶部出现“不正确”的“使用”(即除非类型存在于已经使用过的命名空间的“扩展名”中,那么你运气不好)。 – Albireo