2017-03-07 5 views
3

このチュートリアルでは、ASP.NETコアとその他の関連技術に精通しています。 https://www.codeproject.com/articles/997216/restful-day-sharp-resolve-dependency-of-dependenci直接参照されていないライブラリにアクセスすることができます

WebApiプロジェクトを参照することは、セキュリティ上の理由ではあまり適していないと述べました。だから私は彼と私の驚きに私はServicesで間接的にそれを参照することによって私のWebApiプロジェクトでDataModelのクラスにアクセスすることができます。

以下のスクリーンショットは、プロジェクトの関係をより明確にする(チュートリアルから)。以下の私のWebApiプロジェクトで

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

そして、私の実際の参照。

WebApi's references

私はまだ.NETに非常に新しいですし、それは予想される動作であるかどうかを知りたいのか、これはセキュリティ上のリスクにつながることができます。

答えて

2

この現象は予期しないものですか?

はい。これはtransitive dependencyとして知られています。あたかもプロジェクトがそれらのパッケージ自体に依存しているかのように、依存関係によって参照されるパッケージを参照することができます。これは予想される動作です。参照:Transitive references in .Net Core 1.1

これはセキュリティ上のリスクを招く可能性がありますか?

あなたのコードを安全に保つために、パッケージの依存関係ルールのようなものに頼るべきではありません。代わりに、コードがセキュリティを念頭に置いて記述されていることを確認してください。ユーザーの入力を常にサニタイズし、パラメータ化されたクエリを使用し、サーバー側で承認を実施するなどです。

推移依存性に依存する必要がありますか?彼らは警告なしあなたに消える可能性があるため、あなたのアプリケーション/ライブラリは、推移的依存関係に頼るべきではありません

(あなたの依存関係の1つがその依存関係を変更した場合)。代わりに、明示的に、あなたのコードが依存するパッケージを適切な依存関係にする。

+1

これは間違いなく私の質問に答えましたが、私はまだ心配していますが、どういうふうに見えるのでしょうか?とにかく、あなたの答えをありがとう!私は、この振る舞いに使用される「推移的」という用語を知っているので、今すぐもっと見ていきます。 :) – Lawrence

+0

@Lawrence私は同意する、それ自体が_insecure_ではないかもしれないが、それは乱雑である。私はもう少し色で答えを更新します。うれしいことはうれしいです。 :) –

+1

_あなたのアプリケーションやライブラリは推移的依存関係に依存すべきではありません。問題はVisual Studioが間接依存関係で定義されているという警告なしで推移的依存関係タイプを使用することを喜んで提案します。あなたが知っていることは、ファイルの一番上に表示されている「間違った」「使用する」ことに気付くことです(つまり、型が既に '使用されている'名前空間の「拡張子」に存在しない限り)運が良かったから)。 – Albireo

関連する問題