Dela via


Generering av säkerhets- och direktkod

Vissa bibliotek fungerar genom att generera kod och köra den för att utföra en åtgärd för anroparen. Det grundläggande problemet är att generera kod för mindre betrodd kod och köra den på ett högre förtroende. Problemet förvärras när anroparen kan påverka kodgenereringen, så du måste se till att endast kod som du anser vara säker genereras.

Du behöver veta exakt vilken kod du genererar hela tiden. Det innebär att du måste ha strikta kontroller för alla värden som du får från en användare, oavsett om de innehåller citatsträngar (som bör vara undantagna så att de inte kan innehålla oväntade kodelement), identifierare (som ska kontrolleras för att kontrollera att de är giltiga identifierare) eller något annat. Identifierare kan vara farliga eftersom en kompilerad sammansättning kan ändras så att dess identifierare innehåller konstiga tecken, vilket förmodligen kommer att bryta den (även om detta sällan är en säkerhetsrisk).

Vi rekommenderar att du genererar kod med reflektionsemitta, vilket ofta hjälper dig att undvika många av dessa problem.

När du kompilerar koden bör du överväga om ett skadligt program kan ändra den på något sätt. Finns det ett litet tidsfönster under vilken skadlig kod kan ändra källkoden på disken innan kompilatorn läser den eller innan koden läser in .dll-filen? I så fall måste du skydda katalogen som innehåller dessa filer med hjälp av en åtkomstkontrollista i filsystemet efter behov.

Se även