Hallo zusammen
Ich muss in einem meiner Projekte eine Assembly vom Filesystem laden. Dazu verwende ich die Methode Assembly.LoadFile(string path);
Die Codeanalyse meint dann aber, dass diese Methode "böse" seie.
MSDN: Avoid calling problematic methods
Weiss jemand wieso diese Methode böse ist? (Ich bekomm keine Alternative vorgeschlagen, wie z.b. bei Obsolete Meldungen).
Danke für eure Hilfe
If you can't make it, fake it.
Hallo Lexodus,
in deinem Link steht doch, das diese Methoden problematisch sind.
mfg.
markus111
Ja klar, aber mich würde das wieso interessieren? Da muss es ja irgendwelche Fallstricke geben und die möchte ich vermeiden..
If you can't make it, fake it.
Würde mich auch interessieren ...
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
bei den ersten 5 Methoden ist es fast klar, die klingen schon gefährlich
beachte dazu die Hilfe zu Thread.Resume
Bei LoadFrom weist Du nicht welche Assembly Du bekommst, wenn eine mit dem gleichen Namen schon da ist nimmt er die, nicht die die Du willst.
LoadFile lädt keine Referencen, LoadWithPartialName klingt in der Hilfe schon komisch, generell sind die meisten Load... Obsolete markiert.
Fazit:
Funktionieren tun alle, aber sie beherbergen unvorhersehbare Fehler (LoadFrom liefert nicht das was es verspricht) und zeigen dadurch auf, dass sich jemand nicht mächtig viel Gedanken über das gemacht hat, wie er was haben will.
mbg
Rossegger Robert
mehr fragen mehr wissen
Montag morgen ist die beste Zeit um eine erfolgreiche Woche zu beginnen
**@GC.Collect 😗*
der GC weiß es in 99% aller fälle besser, wann er was zu tun hat.
**@Thread.Resume & Thread.Suspend 😗*
inkonsistenter zustand in der threadabarbeitung und die stark erhöhte gefahr von deadlocks.
**@Type.InvokeMember with BindingFlags.NonPublic 😗*
naja... wenn etwas nciht public ist, dann hat es schon seinen grund.
**@SafeHandle.DangerousGetHandle 😗*
der name sagt es schon. das ist ein sicherheitsleck, das angreifer relativ simpel ausnutzen können um im aufräumprozess code einzuschleusen, welcher dann mit den rechten der anwendung ausgeführt wird.
@Assembly.LoadFrom & Assembly.LoadFile & Assembly.LoadWithPartialName:
angreifer können dir einfach eine assembly unterjubeln und mit den rechten deiner anwendung ausführen lassen. alles was sie machen müssen, ist im reflector anschauen, welches interface oder welche klasse du lädst oder instanziierst. dann noch ein wenig böser code und fertig. da hilft im übrigen auch strontyping usw nicht, da in .net 3 (oder 4 ?) das prüfen auf den strongname usw. im latebinding unterlassen wird (zumindest meine ich mich zu erinnern das gelesen zu haben).
**@CoSetProxyBlanket (Ole32) & CoInitializeSecurity (Ole32) 😗*
hierzu kann ich ncihts sagen.