Delen via


Beveiliging en dynamische codegeneratie

Sommige bibliotheken werken door code te genereren en uit te voeren om een bewerking voor de aanroeper uit te voeren. Het basisprobleem is het genereren van code namens minder betrouwbare code en deze te laten draaien op een hoger vertrouwensniveau. 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 nu aanhalingstekens omgeven strings zijn (die moeten worden geëscaped, zodat ze geen onverwachte code-elementen kunnen bevatten), identificatoren (die moeten worden gecontroleerd op geldigheid) 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 kwaadaardig programma is dat de code kan aanpassen. 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