Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Některé knihovny fungují tak, že vygenerují kód a spustí ho, aby provedly nějakou operaci volajícího. Základním problémem je generování kódu jménem méně důvěryhodného kódu a jeho spuštění s vyšší důvěryhodností. Problém se zhoršuje, když volající může ovlivnit generování kódu, takže je nutné zajistit, aby se vygeneroval pouze kód, který považujete za bezpečný.
Potřebujete přesně vědět, jaký kód generujete vždy. To znamená, že musíte mít přísné kontroly u všech hodnot, které získáte od uživatele, ať už jde o řetězce uzavřené v uvozovkách (které by měly být upravené, aby nemohly obsahovat neočekávané prvky kódu), identifikátory (které by se měly zkontrolovat a ověřit jejich platnost) nebo cokoli jiného. Identifikátory mohou být nebezpečné, protože kompilované sestavení lze upravit tak, aby jeho identifikátory obsahovaly podivné znaky, které ho pravděpodobně přeruší (i když se jedná o zřídka ohrožení zabezpečení).
Doporučujeme vygenerovat kód pomocí emitování reflexe, což často pomáhá vyhnout se mnoha těmto problémům.
Při kompilaci kódu zvažte, jestli existuje nějaký způsob, jak by ho mohl škodlivý program upravit. Existuje malé časové období, během kterého může škodlivý kód změnit zdrojový kód na disku, než ho kompilátor přečte nebo před načtením .dll souboru? Pokud ano, musíte podle potřeby chránit adresář obsahující tyto soubory pomocí seznamu řízení přístupu v systému souborů.