Zabezpečení a průběžné vytváření kódu
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 kódu s nižší důvěryhodností a jeho spuštění ve vyšší důvěryhodnosti. 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ž jsou v uvozovkách uzavřené řetězce (které by měly být uvozené, aby nemohly obsahovat neočekávané prvky kódu), identifikátory (které by se měly zkontrolovat a ověřit, zda jsou platné identifikátory) 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 s generováním 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ů.