Säkerhetsöversikt

Att skydda ett program är en pågående process. Det kommer aldrig att finnas en punkt där en utvecklare kan garantera att ett program är säkert från alla attacker, eftersom det är omöjligt att förutsäga vilka typer av framtida attacker nya tekniker kommer att medföra. Omvänt, bara för att ingen ännu har upptäckt (eller publicerat) säkerhetsbrister i ett system betyder det inte att ingen finns eller kan finnas. Du måste planera för säkerhet under projektets designfas samt planera hur säkerheten ska upprätthållas under programmets livslängd.

Design för säkerhet

Ett av de största problemen med att utveckla säkra program är att säkerhet ofta är en eftertanke, något att implementera när ett projekt har kod färdigställts. Att inte skapa säkerhet i ett program från början leder till osäkra program eftersom man inte har tänkt på vad som gör ett program säkert.

Säkerhetsimplementeringen i sista minuten leder till fler buggar, eftersom programvara bryter mot de nya begränsningarna eller måste skrivas om för att hantera oväntade funktioner. Varje rad med reviderad kod innehåller möjligheten att introducera en ny bugg. Därför bör du överväga säkerhet tidigt i utvecklingsprocessen så att den kan fortsätta tillsammans med utvecklingen av nya funktioner.

Hotmodellering

Du kan inte skydda ett system mot angrepp om du inte förstår alla potentiella attacker som det exponeras för. Processen för att utvärdera säkerhetshot, som kallas hotmodellering, är nödvändig för att fastställa sannolikheten för och konsekvenserna av säkerhetsöverträdelser i ditt ADO.NET program.

Hotmodellering består av tre övergripande steg: förstå motståndarens syn, karakterisera systemets säkerhet och fastställa hot.

Hotmodellering är en iterativ metod för att bedöma sårbarheter i ditt program för att hitta de som är farligast eftersom de exponerar de känsligaste data. När du har identifierat säkerhetsriskerna rangordnar du dem efter allvarlighetsgrad och skapar en prioriterad uppsättning motåtgärder för att motverka hoten.

Mer information finns i följande resurser:

Resurs Beskrivning
Webbplatsen för hotmodellering på säkerhetsteknikportalen Resurserna på den här sidan hjälper dig att förstå hotmodelleringsprocessen och skapa hotmodeller som du kan använda för att skydda dina egna program

Principen om lägsta behörighet

När du utformar, skapar och distribuerar ditt program måste du anta att ditt program kommer att attackeras. Dessa attacker kommer ofta från skadlig kod som körs med behörigheterna för användaren som kör koden. Andra kan komma från välmenande kod som har utnyttjats av en angripare. När du planerar säkerhet förutsätter du alltid att det värsta scenariot inträffar.

Ett motmått som du kan använda är att försöka resa så många väggar runt koden som möjligt genom att köra med minsta möjliga behörighet. Principen om minsta behörighet säger att alla privilegier ska beviljas till den minsta mängd kod som krävs under den kortaste tid som krävs för att få jobbet gjort.

Det bästa sättet att skapa säkra program är att börja utan behörigheter alls och sedan lägga till de smalaste behörigheterna för den specifika uppgift som utförs. Att börja med alla behörigheter och sedan neka enskilda leder däremot till osäkra program som är svåra att testa och underhålla eftersom säkerhetshål kan finnas från att oavsiktligt bevilja fler behörigheter än vad som krävs.

Mer information om hur du skyddar dina program finns i följande resurser:

Resurs Beskrivning
Skydda program Innehåller länkar till allmänna säkerhetsavsnitt. Innehåller även länkar till ämnen för att skydda distribuerade program, webbprogram, mobilprogram och skrivbordsprogram.

Code Access Security (CAS)

Kodåtkomstsäkerhet (CAS) är en mekanism som hjälper till att begränsa åtkomsten som koden har till skyddade resurser och åtgärder. I .NET Framework utför CAS följande funktioner:

  • Definierar behörigheter och behörighetsuppsättningar som representerar rätten att komma åt olika systemresurser.

  • Gör det möjligt för administratörer att konfigurera säkerhetsprinciper genom att associera uppsättningar med behörigheter med grupper av kod (kodgrupper).

  • Gör det möjligt för kod att begära de behörigheter som krävs för att köras, samt de behörigheter som skulle vara användbara att ha, och anger vilka behörigheter koden aldrig får ha.

  • Beviljar behörigheter till varje sammansättning som läses in, baserat på de behörigheter som krävs av koden och de åtgärder som tillåts av säkerhetsprincipen.

  • Gör det möjligt för kod att kräva att anroparna har specifika behörigheter.

  • Gör det möjligt för kod att kräva att dess anropare har en digital signatur, vilket gör att endast anropare från en viss organisation eller webbplats kan anropa den skyddade koden.

  • Tillämpar begränsningar för kod vid körning genom att jämföra de beviljade behörigheterna för varje anropare i anropsstacken med de behörigheter som anroparna måste ha.

För att minimera den mängd skador som kan uppstå om en attack lyckas väljer du en säkerhetskontext för din kod som endast ger åtkomst till de resurser som krävs för att få arbetet gjort och inte mer.

Mer information finns i följande resurser:

Resurs Beskrivning
Kodåtkomstsäkerhet och ADO.NET Beskriver interaktionerna mellan kodåtkomstsäkerhet, rollbaserad säkerhet och delvis betrodda miljöer utifrån ett ADO.NET program.
Kodåtkomstsäkerhet Innehåller länkar till ytterligare ämnen som beskriver CAS i .NET Framework.

Databassäkerhet

Principen om lägsta behörighet gäller även för din datakälla. Några allmänna riktlinjer för databassäkerhet är:

  • Skapa konton med lägsta möjliga behörighet.

  • Tillåt inte användare åtkomst till administrativa konton bara för att få koden att fungera.

  • Returnera inte felmeddelanden på serversidan till klientprogram.

  • Verifiera alla indata på både klienten och servern.

  • Använd parametriserade kommandon och undvik dynamiska SQL-instruktioner.

  • Aktivera säkerhetsgranskning och loggning för databasen som du använder så att du får aviseringar om säkerhetsöverträdelser.

Mer information finns i följande resurser:

Resurs Beskrivning
Säkerhet för SQL Server Ger en översikt över SQL Server säkerhet med programscenarier som ger vägledning för att skapa säkra ADO.NET program som är mål för SQL Server.
Rekommendationer för dataåtkomststrategier Innehåller rekommendationer för att komma åt data och utföra databasåtgärder.

Säkerhetsprincip och administration

Felaktig administrering av kodåtkomstsäkerhetsprinciper (CAS) kan potentiellt skapa säkerhetsbrister. När ett program har distribuerats bör tekniker för övervakningssäkerhet användas och risker utvärderas när nya hot dyker upp.

Mer information finns i följande resurser:

Resurs Beskrivning
Hantering av säkerhetsprinciper Innehåller information om hur du skapar och administrerar säkerhetsprinciper.
Metodtips för säkerhetsprinciper Innehåller länkar som beskriver hur du administrerar säkerhetsprinciper.

Se även