Laden...

Code-Analyse Regel CA2001 "böse Methoden"

Erstellt von Lexodus vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.145 Views
L
Lexodus Themenstarter:in
254 Beiträge seit 2005
vor 15 Jahren
Code-Analyse Regel CA2001 "böse Methoden"

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.

479 Beiträge seit 2008
vor 15 Jahren

Hallo Lexodus,

in deinem Link steht doch, das diese Methoden problematisch sind.

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
L
Lexodus Themenstarter:in
254 Beiträge seit 2005
vor 15 Jahren

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.

4.207 Beiträge seit 2003
vor 15 Jahren

Würde mich auch interessieren ...

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

S
443 Beiträge seit 2008
vor 15 Jahren

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

Gelöschter Account
vor 15 Jahren

**@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.