2017-03-07 8 views
3

Ich folgte diesem Tutorial, damit ich mit ASP.NET-Kern und anderen verwandten Technologien vertraut bin. https://www.codeproject.com/articles/997216/restful-day-sharp-resolve-dependency-of-dependenciIch kann auf Bibliotheken zugreifen, die nicht direkt referenziert werden

Er erwähnte, dass das DataModel in WebApi Projekt Referenzierung ist keine gute Praxis aus Sicherheitsgründen. Also folgte ich ihm und zu meiner Überraschung kann ich noch auf Klassen DataModel in meinem WebApi Projekt zugreifen, indem ich indirekt indirekt über Services darauf referenziere.

Unten Screenshot zeigt die Beziehungen der Projekte, um klarer zu sein (aus dem Tutorial).

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

Und meine objektiven Hinweise auf mein WebApi unten Projekt.

WebApi's references

Ich bin immer noch ganz neu in .NET und möchte wissen, ob das ein erwartetes Verhalten ist oder dies kann zu Sicherheitsrisiken führen.

Antwort

2

Ist dieses erwartete Verhalten?

Ja. Dies ist, was als transitive dependency bekannt ist. Ihr Projekt kann auf die Pakete verweisen, auf die seine Abhängigkeiten verweisen, als ob das Projekt von diesen Paketen selbst abhängig wäre. Dies ist das erwartete Verhalten; siehe: Transitive references in .Net Core 1.1

Kann dies zu irgendwelchen Sicherheitsrisiken führen?

Nicht wahrscheinlich. Sie sollten sich nicht auf Dinge wie Paketabhängigkeitsregeln verlassen, um Ihren Code sicher zu halten. Stellen Sie stattdessen sicher, dass Ihr Code mit Sicherheitsvorkehrungen geschrieben wurde - bereinigen Sie immer Benutzereingaben, verwenden Sie parametrisierte Abfragen, erzwingen Sie die Autorisierung auf der Serverseite und so weiter.

Sollte ich auf transitive Abhängigkeiten angewiesen sein?

Ihre apps/Bibliotheken sollten nicht auf transitive Abhängigkeiten verlassen, weil sie auf dich ohne Vorwarnung verschwinden könnten (wenn einer Ihrer Abhängigkeiten seine Abhängigkeiten ändert). Sei stattdessen explizit und mache jedes Paket, auf das dein Code angewiesen ist, zu einer richtigen Abhängigkeit.

+1

Das hat definitiv meine Frage beantwortet, obwohl ich immer noch halbherzig bin, wie soll ich mich dabei fühlen, wie es irgendwie aussieht, ich schätze chaotisch? Wie auch immer, danke für deine Antwort! Ich werde mich jetzt mehr umsehen, weil ich den Begriff "transitiv" für dieses Verhalten kenne. :) – Lawrence

+0

@Lawrence Ich stimme zu, es kann nicht _insecure_ an sich sein, aber es ist chaotisch. Ich werde meine Antwort mit etwas mehr Farbe aktualisieren. Ich bin froh, dass es hilfreich war. :) –

+1

_Ihre Apps/Bibliotheken sollten sich nicht auf transitive Abhängigkeiten verlassen_ Das Problem ist, dass Visual Studio gerne transitive Abhängigkeitstypen ohne Warnung vorschlägt, dass sie in einer indirekten Abhängigkeit definiert sind. Das können Sie nicht wissen. Sie sollten sich bewusst sein, dass Sie das tun, indem Sie ein "falsches" 'using' am Anfang der Datei bemerken (das heißt, wenn der Typ nicht in einer" Erweiterung "eines bereits' using'-ed-Namespace lebt, dann Sie bin Pech gehabt. – Albireo

Verwandte Themen