Code Access Security - Code Access Security
Code Access Security (CAS), i Microsoft .NET -ramverket, är Microsofts lösning för att förhindra otillförlitlig kod från att utföra privilegierade åtgärder. När CLR laddar en enhet kommer den att få bevis för enheten och använda den för att identifiera kodgruppen som enheten tillhör. En kodgrupp innehåller en behörighetsuppsättning (en eller flera behörigheter ). Kod som utför en privilegierad åtgärd kommer att utföra ett krav för åtkomst till kod som kommer att få CLR att gå upp i samtalsbunten och undersöka behörighetsuppsättningen som tilldelats sammansättningen av varje metod i samtalsstacken. Kodgrupperna och behörighetsuppsättningarna bestäms av maskinens administratör som definierar säkerhetspolicyn .
Bevis
Bevis kan vara all information som är associerad med en sammansättning. Standardbevis som används av .NET -kodåtkomstsäkerhet är:
- Programkatalog: katalogen där en sammansättning finns.
- Utgivare: församlingens utgivares digitala signatur (kräver att församlingen signeras via Authenticode ).
- URL : den fullständiga URL: en från vilken sammansättningen startades
- Webbplats: värdnamnet för URL: en/fjärrdomänen/VPN.
- Zon: säkerhetszonen där enheten sitter
- Hash : en kryptografisk hash för enheten, som identifierar en specifik version.
- Starkt namn: en kombination av monteringsnamn, version och offentlig nyckel för signeringsnyckeln som används för att underteckna församlingen. Signeringsnyckeln är inte ett X.509 -certifikat, utan ett anpassat nyckelpar som genereras av det starka namngivningsverktyget, SN.EXE eller av Visual Studio .
En utvecklare kan använda anpassade bevis (så kallade monteringsbevis) men detta kräver att man skriver en säkerhetsenhet och i version 1.1 av .NET fungerar den här funktionen inte.
Bevis baserat på en hash av enheten kan enkelt erhållas i kod. I C# kan till exempel bevis erhållas med följande kodklausul:
this.GetType().Assembly.Evidence
Politik
En policy är en uppsättning uttryck som använder bevis för att bestämma ett kodgruppsmedlemskap. En kodgrupp ger en behörighetsuppsättning för sammansättningarna inom den gruppen. Det finns fyra principer i .NET:
- Företag: policy för en familj av maskiner som ingår i en Active Directory -installation.
- Maskin: policy för den aktuella maskinen.
- Användare: policy för den inloggade användaren.
- AppDomain: policy för den körande applikationsdomänen.
De tre första principerna lagras i XML -filer och administreras via .NET Configuration Tool 1.1 (mscorcfg.msc). Den slutliga policyn administreras via kod för den aktuella applikationsdomänen.
Kodåtkomstsäkerhet kommer att presentera en församlings bevis för varje policy och tar sedan skärningspunkten (det är de behörigheter som är gemensamma för alla genererade behörighetsuppsättningar) som de behörigheter som ges till församlingen.
Som standard ger Enterprise-, User- och AppDomain -policyn fullt förtroende (det vill säga att de tillåter alla sammansättningar att ha alla behörigheter) och maskinpolicyn är mer restriktiv. Eftersom korsningen intas betyder det att den slutliga behörighetsuppsättningen bestäms av maskinpolicyn.
Observera att policysystemet har eliminerats i .NET Framework 4.0.
Kodgrupp
Kodgrupper associerar en bevisning med en namngiven behörighetsuppsättning. Administratören använder .NET -konfigurationsverktyget för att ange en viss typ av bevis (till exempel webbplats) och ett visst värde för det beviset (till exempel www.mysite.com) och identifierar sedan behörighetsuppsättningen som kodgruppen kommer att vara beviljad.
Krav
Kod som utför vissa privilegierade åtgärder kommer att kräva en eller flera behörigheter. Kravet får CLR att gå samtalstacken och för varje metod kommer CLR att se till att de begärda behörigheterna finns i metodens sammansatta beviljade behörigheter. Om tillstånd inte beviljas sedan en säkerhets undantag kastas. Detta förhindrar nedladdad kod från att utföra privilegierade åtgärder. Till exempel, om en samling laddas ner från en otillförlitlig webbplats kommer enheten inte att ha några fil -IO -behörigheter, så om denna församling försöker komma åt en fil, kommer ett undantag att förhindra samtalet.