Framework-updates

Voltooid

Veel ontwikkelaars overwegen de frameworks en bibliotheken die ze gebruiken om hun software te bouwen om voornamelijk te worden bepaald door functies of persoonlijke voorkeur. Het framework dat u kiest, is echter een belangrijke beslissing, niet alleen vanuit ontwerp- en functionaliteitsperspectief, maar ook vanuit een beveiligingsperspectief . U kunt uw apps het beste veilig houden door een framework met moderne beveiligingsfuncties te kiezen en dit framework goed up-to-date te houden.

Zorgvuldig een framework kiezen

Wanneer u een framework kiest, moet u met het oog op beveiliging goed letten op hoe het framework wordt ondersteund. Bij de beste frameworks zijn er al beveiligingsmaatregelen getroffen én deze worden door grote community's ondersteund. Deze community's zijn continu bezig met het verbeteren en testen van het framework. Geen enkele software is volledig foutvrij of 100% veilig. Wanneer er echter een beveiligingsprobleem wordt ontdekt, moet u er zeker van zijn dat dit probleem wordt verholpen of dat er snel een tijdelijke oplossing wordt geboden.

'Goed ondersteund' staat dan ook vaak gelijk aan 'modern'. Oudere frameworks worden in de meeste gevallen vervangen, of ze worden steeds minder populair. Zelfs als u veel ervaring hebt met (of al veel apps hebt geschreven in) een ouder framework, is het een goed idee om een moderne bibliotheek te kiezen met alle functies die u nodig hebt. Moderne frameworks bouwen meestal voort op de lessen die zijn geleerd door eerdere iteraties, waardoor ze voor nieuwe apps worden gekozen als een vorm van bedreigingsoppervlakvermindering. U hebt nog een app om u zorgen over te maken als er een beveiligingsprobleem wordt gedetecteerd in het oudere framework waarin uw verouderde toepassingen worden geschreven.

Zie Microsoft Azure Well-Architected Framework - Security voor meer informatie over veilig ontwerp en het verminderen van het bedreigingsoppervlak.

Uw framework bijgewerkt houden

Softwareontwikkelingsframeworks (zoals Java Spring en .NET Core) release-updates en nieuwe versies regelmatig. Deze updates bevatten nieuwe functies, er worden oude functies mee verwijderd en ze bevatten vaak beveiligingsoplossingen of verbeteringen. Wanneer we toestaan dat onze frameworks verouderd zijn, ontstaat er 'technische schuld'. Hoe verder verouderd we worden, hoe moeilijker en riskanter het zal zijn om onze code naar de nieuwste versie te brengen. Als u een oudere versie van het framework blijft gebruiken, worden de beveiligingsrisico's steeds groter, terwijl deze in nieuwere versies van het framework sowieso al zijn verkleind.

Uit 2016-2017 zijn bijvoorbeeld meer dan 30 beveiligingsproblemen gevonden in het Apache Struts-framework. Het ontwikkelteam heeft deze beveiligingsproblemen snel aangepakt, maar sommige bedrijven hebben de patches niet toegepast en de prijs betaald in de vorm van een gegevenslek. Zorg ervoor dat uw frameworks en bibliotheken up-to-date blijven.

Hoe werk ik mijn framework bij?

Bij sommige frameworks, zoals Java en .NET, moet er een installatie worden uitgevoerd. Hierbij wordt steeds op vaste data een nieuwe versie beschikbaar gemaakt. Houd in de gaten wanneer er nieuwe versies zijn. Maak een vertakking in uw code om deze nieuwe versie na de release uit te proberen. Als voorbeeld onderhoudt .NET Core een pagina met opmerkingen bij de release die u kunt controleren om de nieuwste versies te vinden die beschikbaar zijn.

U kunt meer gespecialiseerde bibliotheken, zoals JavaScript-frameworks of .NET-onderdelen, bijwerken via pakketbeheer. NPM en Webpack zijn populaire keuzes voor webprojecten en worden ondersteund door de meeste IDE's en bouwhulpprogramma's. Bij .NET wordt gebruikgemaakt van NuGet om de onderdeelafhankelijkheden te beheren. Net zoals het bijwerken van het kernframework, het vertakken van uw code, het bijwerken van de onderdelen en het testen is een goede techniek om een nieuwe versie van een afhankelijkheid te valideren.

Notitie

Het dotnet opdrachtregelprogramma heeft een add package en remove package optie om NuGet-pakketten toe te voegen of te verwijderen, maar heeft geen bijbehorende update package opdracht. Het blijkt echter dat u dotnet add package <package-name> kunt uitvoeren in uw project om het pakket automatisch te upgraden naar de nieuwste versie. Op deze manier kunt u eenvoudig afhankelijkheden bijwerken zonder dat u de IDE hoeft te openen.

Profiteren van ingebouwde beveiliging

Bekijk altijd welke beveiligingsfuncties uw frameworks bieden. Gebruik nooit uw eigen beveiliging als er al technieken of mogelijkheden voor zijn ingebouwd. Maak daarnaast gebruik van effectief gebleken algoritmen en werkstromen, omdat deze in de meeste gevallen regelmatig zijn getest door experts en vervolgens aangepast. U weet dus zeker dat ze betrouwbaar en veilig zijn.

Het .NET Core-framework heeft talloze beveiligingsfuncties. Hier volgen enkele belangrijke uitgangspunten in de documentatie:

Elk van deze functies is geschreven door experts in hun vakgebied, en vervolgens met tests om ervoor te zorgen dat ze werken zoals bedoeld en alleen zoals bedoeld. Andere frameworks bieden vergelijkbare functies; neem contact op met de leverancier die het framework biedt om erachter te komen wat ze in elke categorie hebben.

Waarschuwing

Het schrijven van uw eigen beveiligingscontroles, in plaats van die van uw framework, is niet alleen een verspilling van tijd, het is minder veilig.

Microsoft Defender for Cloud

Wanneer u Azure gebruikt om uw webtoepassingen te hosten, wordt Defender voor Cloud u gewaarschuwd als uw frameworks verouderd zijn als onderdeel van het tabblad Aanbevelingen. Vergeet niet om er van tijd tot tijd naar te kijken om te zien of er waarschuwingen zijn met betrekking tot uw apps.

Screenshot of Microsoft Defender for Cloud recommending a framework upgrade.

Samenvatting

Waar mogelijk kiest u voor een modern framework voor het bouwen van apps, gebruikt u altijd de ingebouwde beveiligingsfuncties én zorgt u ervoor dat u het framework up-to-date houdt. Als u deze eenvoudige regels opvolgt, weet u zeker dat uw toepassing een solide basis heeft.