Diskuze: Nové instance ze stringu
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
PHP to dělá přes tzv. reflexi, tu má C# také. Nedávno jsem tu zrovna tohle řešil, bohužel si už nevzpomínám na vlákno. Můžeš si dát před své třídy tzv. atribut a pomocí reflexe tu třídu pak najít.
Obávám se, že thirdknown chce udělat Simple Factory v C# stejně špatným způsobem, jako to dělal v PHP.
Samozřejmě to jde dělat jinak, někde jsem to rozváděl dost detailně, zkusím to najít.
Pročti si vlákno pod tímhle článkem: http://www.itnetwork.cz/…f-switch/all#…
Kit: Můžu se zeptat, co je na té továrničce špatně? (kritiku přijímám)
Obvykle se totiž do $nazev
dává hodnota získaná z
$_GET
nebo $_POST
. Ošetřit tyto hodnoty proti
nepravostem nemusí být triviální. Problémem tedy může být potenciální
zranitelnost.
Většinou se v té továrně nevyrábí takový sortiment, aby se to nedalo vyjmenovat.
Ne vše se musí získávat přímo či nepřímo ze superglobálů.
Dobře, takže i normální factory je zranitelná stejně, jako tahle jednoduchá, ne?
Nevím, jak jsi zdatný. Zkus si představit, co by se asi s aplikací stalo, kdyby se do toho řetězce dostal název nějaké jiné (třeba systémové) třídy nebo třídy z jiného adresáře. Pokud se to stát nemůže, tak to asi budeš mít v pořádku a můžeš použít reflexi viz sdraco.
BTW: místo armády ifů se v PHP dá použít jeden switch.
Však to je mi jasné.
Větu Ne vše se musí získávat přímo či nepřímo ze
superglobálů. jsem myslel vážně. Třeba v případě, že moje
aplikace se připojuje na mikrotik a něco z něj získává. Tady fakt není
$_GET nebo $_POST. Nejsem nezdatný.
Switch místo if mám již za sebou.
V tom c# je to metoda CreateInstance objektu Activator. Podívej se sem http://msdn.microsoft.com/…nstance.aspx
Zobrazeno 12 zpráv z 12.