Share via


Säkerhetsöverväganden för sammansättning

När du skapar en sammansättning kan du ange en uppsättning behörigheter som sammansättningen kräver för att köras. Huruvida vissa behörigheter beviljas eller inte beviljas till en sammansättning baseras på bevis.

Det finns två olika sätt som bevis används på:

  • Indatabevisen sammanfogas med de bevis som samlas in av inläsaren för att skapa en slutlig uppsättning bevis som används för principmatchning. Metoderna som använder den här semantiken är Assembly.Load, Assembly.LoadFrom och Activator.CreateInstance.

  • Indatabevisen används oförändrade som den slutliga uppsättningen bevis som används för principmatchning. Metoderna som använder den här semantiken är Assembly.Load(byte[]) och AppDomain.DefineDynamicAssembly().

    Valfria behörigheter kan beviljas av den säkerhetsprincip som angetts på den dator där sammansättningen ska köras. Om du vill att koden ska hantera alla möjliga säkerhetsfel kan du göra något av följande:

  • Infoga en behörighetsbegäran för alla behörigheter som koden måste ha och hantera det belastningsfel som inträffar i förväg om behörigheterna inte beviljas.

  • Använd inte en behörighetsbegäran för att få behörigheter som koden kan behöva, men var beredd att hantera säkerhetsfel om behörigheter inte beviljas.

    Kommentar

    Säkerhet är ett komplext område och du har många alternativ att välja mellan. Mer information finns i Viktiga säkerhetsbegrepp.

Vid belastningstillfället används sammansättningens bevis som indata till säkerhetsprincipen. Säkerhetsprincipen upprättas av företaget och datorns administratör samt av användarprincipinställningar och avgör vilken uppsättning behörigheter som beviljas till all hanterad kod när den körs. Säkerhetsprincip kan upprättas för utgivaren av sammansättningen (om den har ett signeringsverktyg genererad signatur), för webbplatsen och zonen (vilket var ett Internet Explorer-koncept) som sammansättningen laddades ned från eller för sammansättningens starka namn. En dators administratör kan till exempel upprätta en säkerhetsprincip som tillåter att all kod som laddas ned från en webbplats och signeras av ett visst programvaruföretag får åtkomst till en databas på en dator, men som inte ger åtkomst till att skriva till datorns disk.

Starka namngivna sammansättningar och signeringsverktyg

Varning

Förlita dig inte på starka namn för säkerhet. De ger endast en unik identitet.

Du kan signera en sammansättning på två olika men kompletterande sätt: med ett starkt namn eller med hjälp av SignTool.exe (sign tool). Om du signerar en sammansättning med ett starkt namn läggs kryptering med offentlig nyckel till filen som innehåller sammansättningsmanifestet. Stark namnsignering hjälper till att verifiera namn unikhet, förhindra förfalskning av namn och ge anropare viss identitet när en referens matchas.

Ingen förtroendenivå är associerad med ett starkt namn, vilket gör SignTool.exe (sign tool) viktiga. De två signeringsverktygen kräver att en utgivare bevisar sin identitet för en tredjepartsutfärdare och hämtar ett certifikat. Det här certifikatet bäddas sedan in i filen och kan användas av en administratör för att avgöra om kodens äkthet ska vara betrodd.

Du kan ge både ett starkt namn och en digital signatur som skapats med hjälp av SignTool.exe (sign tool) till en sammansättning, eller så kan du använda antingen ensam. De två signeringsverktygen kan bara signera en fil i taget. för en sammansättning med flera filer signerar du filen som innehåller sammansättningsmanifestet. Ett starkt namn lagras i filen som innehåller sammansättningsmanifestet, men en signatur som skapats med SignTool.exe (sign tool) lagras i ett reserverat fack i den portabla körbara filen (PE) som innehåller sammansättningsmanifestet. Signering av en sammansättning med SignTool.exe (sign tool) kan användas (med eller utan ett starkt namn) när du redan har en förtroendehierarki som förlitar sig på SignTool.exe (sign tool) genererade signaturer, eller när principen endast använder nyckeldelen och inte kontrollerar en förtroendekedja.

Kommentar

När du använder både ett starkt namn och en signeringsverktygssignatur för en sammansättning måste det starka namnet tilldelas först.

Den vanliga språkkörningen utför också en hash-verifiering. sammansättningsmanifestet innehåller en lista över alla filer som utgör sammansättningen, inklusive en hash för varje fil som den fanns när manifestet skapades. När varje fil läses in hashas innehållet och jämförs med det hash-värde som lagras i manifestet. Om de två hashvärdena inte matchar kan sammansättningen inte läsas in.

Stark namngivning och signering med hjälp av SignTool.exe (sign tool) garanterar integritet via digitala signaturer och certifikat. Alla tekniker som nämns, dvs. hashverifiering, stark namngivning och signering med hjälp av SignTool.exe (Sign Tool), arbetar tillsammans för att säkerställa att sammansättningen inte har ändrats på något sätt.

Se även