Delen via


Beveiliging en on-the-fly code genereren

Sommige bibliotheken werken door code te genereren en uit te voeren om een bewerking voor de aanroeper uit te voeren. Het basisprobleem genereert code namens code met minder vertrouwen en voert deze uit op een hogere vertrouwensrelatie. Het probleem verslechtert wanneer de aanroeper invloed kan hebben op het genereren van code, dus u moet ervoor zorgen dat alleen code die u als veilig beschouwt, wordt gegenereerd.

U moet precies weten welke code u altijd genereert. Dit betekent dat u strikte controles moet hebben voor waarden die u van een gebruiker krijgt, of ze tussen aanhalingstekenreeksen zijn (die moeten worden ontsnapt, zodat ze geen onverwachte code-elementen kunnen bevatten), id's (die moeten worden gecontroleerd om te controleren of ze geldige id's zijn) of iets anders. Id's kunnen gevaarlijk zijn omdat een gecompileerde assembly kan worden gewijzigd, zodat de id's vreemde tekens bevatten, waardoor deze waarschijnlijk wordt verbroken (hoewel dit zelden een beveiligingsprobleem is).

Het wordt aanbevolen om code te genereren met reflectie-emit, waardoor u vaak veel van deze problemen kunt voorkomen.

Wanneer u de code compileert, moet u overwegen of er een kwaadwillende programma kan worden gewijzigd. Is er een klein tijdvenster waarin schadelijke code broncode op schijf kan wijzigen voordat de compiler deze leest of voordat de code het .dll bestand laadt? Als dat het geval is, moet u de map met deze bestanden beveiligen met behulp van een toegangsbeheerlijst in het bestandssysteem, indien van toepassing.

Zie ook