Dela via


Utveckla säkra program i Azure

I den här artikeln presenterar vi säkerhetsaktiviteter och kontroller att tänka på när du utvecklar program för molnet. Säkerhetsfrågor och begrepp att tänka på under implementerings- och verifieringsfaserna i Microsoft Security Development Lifecycle (SDL) omfattas. Målet är att hjälpa dig att definiera aktiviteter och Azure-tjänster som du kan använda för att utveckla ett säkrare program.

Följande SDL-faser beskrivs i den här artikeln:

  • Implementation
  • Verification

Implementation

Fokus för implementeringsfasen är att upprätta metodtips för tidigt förebyggande och identifiera och ta bort säkerhetsproblem från koden. Anta att ditt program används på ett sätt som du inte hade för avsikt att använda. Detta hjälper dig att skydda dig mot oavsiktligt eller avsiktligt missbruk av ditt program.

Utföra kodgranskningar

Innan du checkar in kod utför du kodgranskningar för att öka den övergripande kodkvaliteten och minska risken för att skapa buggar. You can use Visual Studio to manage the code review process.

Utföra statisk kodanalys

Statisk kodanalys (kallas även källkodsanalys) utförs som en del av en kodgranskning. Statisk kodanalys refererar ofta till att köra analysverktyg för statisk kod för att hitta potentiella sårbarheter i kod som inte körs. Static code analysis uses techniques like taint checking and data flow analysis.

Azure Marketplace offers developer tools that perform static code analysis and assist with code reviews.

Verifiera och sanera alla indata för ditt program

Behandla alla indata som ej betrodda för att skydda ditt program mot de vanligaste säkerhetsriskerna för webbprogram. Ej betrodda data är ett verktyg för inmatningsattacker. Indata för ditt program innehåller parametrar i URL:en, indata från användaren, data från databasen eller från ett API och allt som skickas i som en användare potentiellt kan manipulera. An application should validate that data is syntactically and semantically valid before the application uses the data in any way (including displaying it back to the user).

Verifiera indata tidigt i dataflödet för att säkerställa att endast korrekt formade data kommer in i arbetsflödet. Du vill inte att felaktiga data ska bevaras i databasen eller utlösa ett fel i en underordnad komponent.

Blocklistning och allowlisting är två allmänna metoder för att utföra validering av indatasyntax:

  • Försök att blockera syftar till att kontrollera att användarinmatningen inte innehåller innehåll som är känt för att vara skadligt.

  • Tillåtlistning försöker kontrollera att en viss användarindata matchar en uppsättning "kända bra" indata. Teckenbaserad godkännandelista är en form av godkännandelista där en applikation kontrollerar att användarindata endast innehåller "godkända" tecken eller att indata matchar ett känt format.

    Det kan till exempel handla om att kontrollera att ett användarnamn endast innehåller alfanumeriska tecken eller att det innehåller exakt två tal.

Allowlisting är den bästa metoden för att skapa säker programvara. Blocklistning är felbenägen eftersom det är omöjligt att komma på en fullständig lista över potentiellt felaktiga indata.

Gör detta på servern, inte på klientsidan (eller på servern och på klientsidan).

Verifiera programmets utdata

Alla utdata som du presenterar antingen visuellt eller i ett dokument ska alltid kodas och undantagas. Escaping, also known as output encoding, is used to help ensure that untrusted data isn't a vehicle for an injection attack. Escape-tekniker, kombinerat med dataverifiering, ger ett flerlagersskydd för att öka säkerheten i hela systemet.

Escaping makes sure that everything is displayed as output. Escaping also lets the interpreter know that the data isn't intended to be executed, and this prevents attacks from working. This is another common attack technique called cross-site scripting (XSS).

Om du använder ett webbramverk från en tredje part kan du verifiera dina alternativ för utdatakodning på webbplatser med hjälp av OWASP XSS-fuskbladet för förebyggande.

Använda parametriserade frågor när du kontaktar databasen

Skapa aldrig en infogad databasfråga "i farten" i koden och skicka den direkt till databasen. Skadlig kod som infogas i programmet kan göra att databasen blir stulen, rensad eller ändrad. Ditt program kan också användas för att köra skadliga operativsystemkommandon på operativsystemet som är värd för databasen.

Använd i stället parametriserade frågor eller lagrade procedurer. När du använder parametriserade frågor kan du anropa proceduren från koden på ett säkert sätt och skicka en sträng utan att oroa dig för att den ska behandlas som en del av frågeuttryck.

Ta bort standardserverhuvuden

Rubriker som Server, X-Powered-By och X-AspNet-Version avslöja information om servern och underliggande tekniker. Vi rekommenderar att du utelämnar dessa rubriker för att undvika fingeravtryck för programmet. Se ta bort standardserverhuvuden på Azure-webbplatser.

Separera dina produktionsdata

Dina produktionsdata, eller "verkliga" data, bör inte användas för utveckling, testning eller något annat syfte än vad företaget avsåg. A masked (anonymized) dataset should be used for all development and testing.

Det innebär att färre personer har åtkomst till dina verkliga data, vilket minskar din attackyta. Det innebär också att färre anställda ser personuppgifter, vilket eliminerar ett potentiellt intrång i konfidentialiteten.

Implementera en stark lösenordspolicy

För att försvara dig mot råstyrke- och ordlistebaserad gissning måste du implementera en stark lösenordsprincip för att säkerställa att användarna skapar ett komplext lösenord (till exempel 12 teckens minsta längd och kräver alfanumeriska och specialtecken).

Microsoft Entra Externt ID i externa klienter hjälper dig med lösenordshantering genom att tillhandahålla självbetjänad lösenordsåterställning med mera.

Om du vill skydda dig mot attacker på standardkonton kontrollerar du att alla nycklar och lösenord kan ersättas och att de genereras eller ersätts när du har installerat resurser.

Om programmet måste generera lösenord automatiskt kontrollerar du att de genererade lösenorden är slumpmässiga och att de har hög entropi.

Verifiera filuppladdningar

If your application allows file uploads, consider precautions that you can take for this risky activity. Det första steget i många attacker är att få in skadlig kod i ett system som är under attack. Att använda en filuppladdning hjälper angriparen att åstadkomma detta. OWASP erbjuder lösningar för att verifiera en fil för att säkerställa att filen du laddar upp är säker.

Skydd mot skadlig kod hjälper dig att identifiera och ta bort virus, spionprogram och annan skadlig programvara. You can install Microsoft Antimalware or a Microsoft partner's endpoint protection solution (Trend Micro, Broadcom, McAfee, Microsoft Defender Antivirus in Windows, and Endpoint Protection).

Microsoft Antimalware includes features like real-time protection, scheduled scanning, malware remediation, signature updates, engine updates, samples reporting, and exclusion event collection. Du kan integrera Microsoft Antimalware- och partnerlösningar med Microsoft Defender för molnet för enkel distribution och inbyggda identifieringar (aviseringar och incidenter).

Cacha inte känsligt innehåll

Cachelagrat inte känsligt innehåll i webbläsaren. Webbläsare kan lagra information för cachelagring och historik. Cachelagrade filer lagras i en mapp som mappen Temporära Internet-filer, när det gäller Internet Explorer. När dessa sidor refereras till igen visar webbläsaren sidorna från cacheminnet. If sensitive information (address, credit card details, Social security number, username) is displayed to the user, the information might be stored in the browser's cache and be retrievable by examining the browser's cache or by pressing the browser's Back button.

Verification

Verifieringsfasen innebär en omfattande insats för att säkerställa att koden uppfyller de säkerhets- och sekretessregler som fastställdes i föregående faser.

Hitta och åtgärda sårbarheter i programberoenden

Du genomsöker programmet och dess beroende bibliotek för att identifiera kända sårbara komponenter. Produkter som är tillgängliga för att utföra den här genomsökningen är OWASP Dependency Check, Snyk och Black Duck.

Testa ditt program i ett driftstillstånd

DAST (Dynamic Application Security Testing) är en process för att testa ett program i drifttillstånd för att hitta säkerhetsrisker. DAST-verktyg analyserar program medan de körs för att hitta säkerhetsrisker som minnesskada, osäker serverkonfiguration, skript mellan platser, problem med användarbehörigheter, SQL-inmatning och andra kritiska säkerhetsproblem.

DAST skiljer sig från SAST (Static Application Security Testing). SAST-verktyg analyserar källkod eller kompilerade versioner av kod när koden inte körs för att hitta säkerhetsbrister.

Perform DAST, preferably with the assistance of a security professional (a penetration tester or vulnerability assessor). Om en säkerhetspersonal inte är tillgänglig kan du utföra DAST själv med en webbproxyskanner och viss utbildning. Anslut en DAST-skanner tidigt för att säkerställa att du inte introducerar uppenbara säkerhetsproblem i koden. See the OWASP site for a list of web application vulnerability scanners.

Utföra fuzztestning

In fuzz testing, you induce program failure by deliberately introducing malformed or random data to an application. Att inducera programfel hjälper till att avslöja potentiella säkerhetsproblem innan programmet släpps.

Säkerhetsriskidentifiering är Microsofts unika fuzz-testtjänst för att hitta säkerhetskritiska buggar i programvara.

Genomför en granskning av attackytan

Genom att granska attackytan efter att koden har slutförts ser du till att eventuella design- eller implementeringsändringar i ett program eller system har övervägts. Det hjälper till att säkerställa att alla nya attackvektorer som har skapats till följd av ändringarna, inklusive hotmodeller, har granskats och minimerats.

Du kan skapa en bild av attackytan genom att skanna programmet. Microsoft erbjuder ett analysverktyg för attackytan som kallas Attack Surface Analyzer. Du kan välja bland många kommersiella verktyg eller tjänster för dynamisk testning och sårbarhetsgenomsökning, inklusive OWASP Attack Surface Detector, Arachni och w3af. Dessa genomsökningsverktyg crawlar din app och mappar de delar av programmet som är tillgängliga via webben. You can also search the Azure Marketplace for similar developer tools.

Utföra säkerhetspenetreringstestning

Att se till att ditt program är säkert är lika viktigt som att testa andra funktioner. Make penetration testing a standard part of the build and deployment process. Schemalägg regelbundna säkerhetstester och sårbarhetsgenomsökning i distribuerade program och övervaka öppna portar, slutpunkter och attacker.

Köra säkerhetsverifieringstester

Azure Tenant Security Solution (AzTS) från Secure DevOps Kit for Azure (AzSK) innehåller SVT:er för flera tjänster av Azure-plattformen. Du kör dessa SVT:er regelbundet för att säkerställa att din Azure-prenumeration och de olika resurser som ingår i din applikation är i säkerhetstillstånd. Du kan också automatisera dessa tester med hjälp av ci/CD-tilläggsfunktionen (kontinuerlig integrering/kontinuerlig distribution) i AzSK, vilket gör SVT:er tillgängliga som ett Visual Studio-tillägg.

Next steps

I följande artiklar rekommenderar vi säkerhetskontroller och aktiviteter som kan hjälpa dig att utforma och distribuera säkra program.