Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln innehåller information om säkerhetsverktyg och metoder. Att använda dem gör inte program immuna mot attacker, men det gör framgångsrika attacker mindre sannolika.
Visuella C++-säkerhetsfunktioner
Dessa säkerhetsfunktioner är inbyggda i Microsoft C++-kompilatorn och länkaren:
              
              /guard (Aktivera Control Flow Guard)
Gör att kompilatorn analyserar kontrollflödet för indirekta anropsmål vid kompileringstillfället och sedan infogar kod för att verifiera målen vid körning.
              
              /GS (Buffertsäkerhetskontroll)
Instruerar kompilatorn att infoga kod för överkörningsidentifiering i funktioner som riskerar att utnyttjas. När en överkörning identifieras stoppas körningen. Det här alternativet är aktiverat som standard.
              
              /SAFESEH (Bildfilen har säkerhetsundantagshanterare)
Instruerar länkaren att i utdatabilden inkludera en tabell som innehåller adressen för varje undantagshanterare. Vid körning använder operativsystemet den här tabellen för att se till att endast legitima undantagshanterare körs. Detta hjälper till att förhindra körning av undantagshanterare som introduceras av en skadlig attack under körning. Som standard är det här alternativet inaktiverat.
              /NXCOMPAT, /NXCOMPAT (Kompatibel med dataexekveringsskydd)
Dessa kompilator- och länkalternativ möjliggör kompatibilitet med datakörningsskydd (DEP). DEP skyddar processorn mot körning av icke-kodade sidor.
              
              /analyze (Kodanalys)
Det här kompileringsalternativet aktiverar kodanalys som rapporterar potentiella säkerhetsproblem som buffertöverskridning, oinitierat minne, null-pekaravreferencing och minnesläckor. Som standard är det här alternativet inaktiverat. Mer information finns i Kodanalys för C/C++-översikt.
              
              /DYNAMICBASE (Använd randomisering av adressutrymmeslayout)
Med det här länkalternativet kan du skapa en körbar avbildning som kan läsas in på olika platser i minnet i början av körningen. Det här alternativet gör även stackplatsen i minnet mycket mindre förutsägbar.
Security-Enhanced CRT
C Runtime Library (CRT) har utökats till att omfatta säkra versioner av funktioner som utgör säkerhetsrisker, till exempel funktionen för omarkerad strcpy strängkopiering. Eftersom de äldre, icke-säkerhetsbaserade versionerna av dessa funktioner är inaktuella orsakar de kompileringstidsvarningar. Vi rekommenderar att du använder de säkra versionerna av dessa CRT-funktioner i stället för att ignorera kompileringsvarningarna. Mer information finns i Säkerhetsfunktioner i CRT.
SafeInt-bibliotek
              SafeInt-biblioteket hjälper till att förhindra heltalsspill och andra exploaterbara fel som kan uppstå när programmet utför matematiska åtgärder. Biblioteket SafeInt innehåller SafeInt-klassen, SafeIntException-klassen och flera SafeInt Functions.
Klassen SafeInt skyddar mot heltalsöverskridande och division med noll-exploiteringar. Du kan använda den för att hantera jämförelser mellan värden av olika typer. Den innehåller två principer för felhantering. Standardprincipen SafeInt är att klassen genererar ett SafeIntException klassfel för att rapportera varför en matematisk åtgärd inte kan slutföras. Den andra principen är att klassen SafeInt ska stoppa programkörningen. Du kan också definiera en anpassad policy.
Varje SafeInt funktion skyddar en matematisk åtgärd från ett exploaterbart fel. Du kan använda två olika typer av parametrar utan att konvertera dem till samma typ. Använd klassen för SafeInt att skydda flera matematiska operationer.
Kontrollerade iteratorer
En kontrollerad iterator säkerställer containergränser. När en markerad iterator är utanför gränserna genererar den som standard ett undantag och avslutar programkörningen. En markerad iterator ger andra svarsnivåer som är beroende av värden som har tilldelats till förprocessordefinier som _SECURE_SCL_THROWS och _ITERATOR_DEBUG_LEVEL. Till exempel, vid _ITERATOR_DEBUG_LEVEL=2, ger en markerad iterator omfattande korrekthetskontroller i felsökningsläge, som görs tillgängliga med hjälp av uttryck. Mer information finns i Kontrollerade iteratorer och _ITERATOR_DEBUG_LEVEL.
Kodanalys för hanterad kod
Kodanalys för hanterad kod, även kallat FxCop, kontrollerar sammansättningar för efterlevnad av the.NET Framework-designriktlinjer. FxCop analyserar koden och metadata i varje sammansättning för att söka efter defekter inom följande områden:
- Biblioteksdesign 
- Lokalisering 
- Namngivningskonventioner 
- Prestanda 
- Säkerhet 
Windows-programverifierare
Programverifieraren (AppVerifier) kan hjälpa dig att identifiera potentiell programkompatibilitet, stabilitet och säkerhetsproblem.
AppVerifier övervakar hur ett program använder operativsystemet. Den bevakar filsystemet, registret, minnet och API:erna medan programmet körs och rekommenderar källkodskorrigeringar för problem som upptäcks.
Du kan använda AppVerifier för att:
- Testa potentiella programkompatibilitetsfel som orsakas av vanliga programmeringsfel. 
- Granska ett program för minnesrelaterade problem. 
- Identifiera potentiella säkerhetsproblem i ett program. 
Windows-användarkonton
Om du använder Windows-användarkonton som tillhör gruppen Administratörer utsätts utvecklare och – efter tillägg – kunder för säkerhetsrisker. Mer information finns i Köra som medlem i användargruppen och hur UAC (User Account Control) påverkar ditt program.
Vägledning för spekulativa sidokanaler för körning
Information om hur du identifierar och motverkar sidokanalssårbarheter i hårdvara för spekulativ körning i C++-programvara finns i Vägledning för C++-utvecklare gällande spekulativa sidokanaler.
Se även
System.Security
              Säkerhet i .NET
              Hur UAC (User Account Control) påverkar ditt program