ASP.NET Kernbeveiligingsonderwerpen
ASP.NET Core stelt ontwikkelaars in staat om beveiliging te configureren en te beheren. De volgende lijst bevat koppelingen naar beveiligingsonderwerpen:
- verificatie
- Autorisatie
- gegevensbescherming
- HTTPS-handhaving
- veilige opslag van app-geheimen in ontwikkeling
- XSRF/CSRF-preventie
- CORS (Cross-Origin Resource Sharing) - Ook wel 'gedeeld gebruik van bronnen tussen verschillende bronnen' genoemd
- XSS-aanvallen (Cross-Site Scripting)
Met deze beveiligingsfuncties kunt u robuuste en veilige ASP.NET Core-apps bouwen.
Zie voor Blazor beveiligingsdekking, die de richtlijnen in dit knooppunt aanvult of vervangt, ASP.NET Core Blazor verificatie en autorisatie en de andere artikelen in Blazor's knooppunt Beveiliging en Identity.
ASP.NET Kernbeveiligingsfuncties
ASP.NET Core biedt veel hulpprogramma's en bibliotheken voor het beveiligen van ASP.NET Core-apps, zoals ingebouwde id-providers en identiteitsservices van derden, zoals Facebook, Twitter en LinkedIn. ASP.NET Core biedt verschillende benaderingen voor het opslaan van app-geheimen.
Verificatie versus autorisatie
Authenticatie is een proces waarbij een gebruiker gebruikersgegevens verstrekt die vervolgens worden vergeleken met gegevens die opgeslagen zijn in een besturingssysteem, database, app of resource. Als ze overeenkomen, worden gebruikers geverifieerd en kunnen ze vervolgens acties uitvoeren waarvoor ze zijn geautoriseerd, tijdens een autorisatie. De autorisatie verwijst naar het proces dat bepaalt wat een gebruiker mag doen.
Een andere manier om verificatie te bedenken, is door deze te beschouwen als een manier om een ruimte in te voeren, zoals een server, database, app of resource, terwijl autorisatie is welke acties de gebruiker kan uitvoeren op welke objecten in die ruimte (server, database of app).
Veelvoorkomende beveiligingsproblemen in software
ASP.NET Core en EF functies bevatten waarmee u uw apps kunt beveiligen en beveiligingsschendingen kunt voorkomen. De volgende lijst met koppelingen leidt u naar documentatie over technieken voor gedetailleerde informatie om de meest voorkomende beveiligingsproblemen in web-apps te voorkomen:
- XSS-aanvallen (Cross-Site Scripting)
- SQL-injectieaanvallen
- aanvallen van cross-site request forgery (XSRF/CSRF)
- Open-redirect aanvallen
Er zijn meer beveiligingsproblemen waar u rekening mee moet houden. Zie de andere artikelen in de sectie Beveiliging en Identity van de inhoudsopgave voor meer informatie.
Verificatiestromen beveiligen
U wordt aangeraden de veiligste verificatieoptie te gebruiken. Voor Azure-services is de veiligste authenticatie beheerde identiteiten.
Vermijd Resource Owner Password Credentials-verlening omdat het:
- Stelt het wachtwoord van de gebruiker beschikbaar voor de client.
- Is een aanzienlijk beveiligingsrisico.
- Mag alleen worden gebruikt wanneer andere verificatiestromen niet mogelijk zijn.
Beheerde identiteiten zijn een veilige manier om te verifiëren bij services zonder referenties op te slaan in code, omgevingsvariabelen of configuratiebestanden. Beheerde identiteiten zijn beschikbaar voor Azure-services en kunnen worden gebruikt met Azure SQL, Azure Storage en andere Azure-services:
- Beheerde Identiteiten in Microsoft Entra voor Azure SQL
- beheerde identiteiten voor App Service en Azure Functions
- beveiligde authenticatiestromen
Wanneer de app wordt geïmplementeerd op een testserver, kan een omgevingsvariabele worden gebruikt om de verbindingsreeks in te stellen op een testdatabaseserver. Zie Configurationvoor meer informatie. Omgevingsvariabelen worden over het algemeen opgeslagen in niet-versleutelde tekst. Als de machine of het proces is aangetast, kunnen omgevingsvariabelen worden geopend door niet-vertrouwde partijen. We raden u af om omgevingsvariabelen te gebruiken om een productieverbindingsreeks op te slaan, omdat dit niet de veiligste benadering is.
Richtlijnen voor configuratiegegevens:
- Sla nooit wachtwoorden of andere gevoelige gegevens op in configuratieprovidercode of in configuratiebestanden met tekst zonder opmaak. Het hulpprogramma Secret Manager kan worden gebruikt om geheimen voor ontwikkelingsdoeleinden op te slaan.
- Gebruik geen productiegeheimen in ontwikkel- of testomgevingen.
- Geef geheimen buiten het project op, zodat ze niet per ongeluk kunnen worden doorgevoerd in een opslagplaats met broncode.
Zie voor meer informatie:
- Aanbevelingen voor beste praktijken voor beheerde identiteiten
- Aanmelden bij uw applicatie om toegang te krijgen tot bronmateriaal zonder inloggegevens in uw code te verwerken
- Azure-services die beheerde identiteiten kunnen gebruiken voor toegang tot andere services
- IETF OAuth 2.0 Huidige Beste Praktijk voor Beveiliging
Zie voor meer informatie over andere cloudproviders:
- AWS (Amazon Web Services): AWS Key Management Service (KMS)
- Overzicht van Google Cloud Key Management Service
Patronen voor bedrijfsweb-apps
Zie Enterprise-web-app-patronenvoor hulp bij het maken van een betrouwbare, veilige, uitvoerbare, testbare en schaalbare ASP.NET Core-app. Er is een volledige voorbeeldweb-app van productiekwaliteit beschikbaar waarmee de patronen worden geïmplementeerd.