Het juiste framework vinden voor je webapplicatie - Deel 2
Deel 2 - OGD'er Hugo Leisink is actief binnen de Business Unit Softwareontwikkeling. In de driedelige serie "Het juiste framework vinden voor je webapplicatie" geeft hij advies over het ontwikkelen van een webapplicatie en de keuze van het juiste framework. In dit tweede deel geeft Hugo een overzicht van zijn minimale eisen voor een goed framework.
In mijn vorige bericht vertelde ik dat webapplicaties de toekomst hebben. Ze zijn gemakkelijker te beheren dan traditionele desktopapplicaties en zijn bovendien veel toegankelijker. Ook schreef ik dat het succesvol ontwikkelen van een eigen webapplicatie in grote mate afhankelijk is van de keuze van het juiste framework. Daarom geef ik in dit tweede deel een beeld van hoe een goed framework eruit moet zien.
De hieronder beschreven onderdelen zijn naar mijn idee noodzakelijk voor een goed framework. Bij het ontbreken van één of meerdere onderdelen zou kritisch gekeken moeten worden naar mogelijke alternatieven. Dit zijn namelijk punten die zeer moeilijk of zelfs niet door zelfbouw zijn toe te voegen aan het framework zonder grote delen te moeten herschrijven.
Model-View-Controller-structuur
Een goed framework is opgebouwd volgens een Model-View-Controller-structuur. Hierdoor zijn backend-zaken zoals database-aansturingen, de layout en de business-logic netjes van elkaar gescheiden. Deze scheiding draagt goed bij aan de leesbaarheid van de code, wat de kans op het maken van (beveiligings)fouten aanzienlijk verlaagt.
Databasedriver
Het framework dient te beschikken over een goede databasedriver die bescherming biedt tegen SQL-injection. De meeste talen bieden bij hun ingebouwde low-level databasedriver de mogelijkheid om data te escapen, maar omdat dit niet automatisch gebeurt behoudt je het risico dat dit op een bepaalde plek vergeten wordt door de ontwikkelaar en je onverhoopt een beveiligingslek creëert.
Ook biedt een databasedriver in het framework de mogelijkheid om makkelijk queries te loggen, wat gebruikt kan worden om het databasegebruik te optimaliseren. Dit verlaagt de kans op Denial-of-Service door overbelasting van de database.
Sessiemanagement
Goed sessiemanagement is noodzakelijk om sessie-hijacking te voorkomen. De sessiemanagementsfunctionaliteiten van webprogrammeertalen zelf bieden daar niet altijd volledige bescherming tegen.
Centraal geregelde authenticatie en autorisatie
Authenticatie en autorisatie dienen centraal door het framework geregeld te worden en niet door de controller van een pagina. Anders bestaat de kans dat ze voor een controller vergeten of onjuist geïmplementeerd worden.
Centraal startpunt voor afhandeling voor requests
Er dient een centraal startpunt te zijn voor de afhandeling van requests (index.php, default.aspx, etc.). Een centraal request-startpunt is noodzakelijk voor centraal geregelde authenticatie en autorisatie (zie vorig punt). Daarnaast draagt een centraal startpunt bij aan de inzichtelijkheid van de code, wat de kans op het maken van fouten bij het aanpassen of uitbreiden van de code verkleint. Een centraal startpunt wordt meestal geregeld via URL rewriting. Alle requests naar niet bestaande bestanden worden dan herschreven naar dat centrale startpunt.
Positief verleden met betrekking tot beveiligingsfouten
Een verleden met veel beveiligingsfouten geeft een indicatie voor de kwaliteit van de code. Ook beveiligingsfouten in third-party add-ons geven een indicatie voor de kwaliteit van de code van het framework zelf. Immers, een goed en veilig framework biedt een veilige API en controlemogelijkheden voor add-ons die de kans op beveiligingsfouten in een add-on verkleinen. Veel lekke add-ons is een indicatie voor het ontbreken van een veilige API in het framework.
Goede integratie van AJAX
Een AJAX request dient op dezelfde wijze te worden afgehandeld als een gewone request, het liefst via dezelfde code binnen het framework als waarmee gewone requests worden afgehandeld. Immers, het enige verschil tussen een AJAX request en een gewone request is de uitvoer (XML voor AJAX en (X)HTML voor een gewone request). Op beide requests zijn dezelfde authenticatie- en autorisatieregels van toepassing.
Goede rendering van (X)HTML en gebruik van CSS
Goede rendering van (X)HTML en goed gebruik van CSS zijn belangrijk voor de compatibiliteit met de verschillende beschikbare browsers.
Goede documentatie
Goede documentatie is belangrijk voor het snel en goed kunnen begrijpen van het framework.
Logging-functionaliteit
Goede logging is noodzakelijk om problemen te kunnen analyseren. Bij misdragende gebruikers is goede logging noodzakelijk om te kunnen achterhalen wie wat wanneer gedaan heeft.
Verdere features en het vinden van een geschikt framework
Naast deze noodzakelijke eigenschappen voor een goed framework bestaat er nog een aantal features welke mogelijk met zelfbouw toegevoegd kunnen worden. In het laatste deel van deze serie ga ik hier verder op in. Wanneer ik alle noodzakelijke en nuttige onderdelen op een rij heb gezet, leg ik tot slot nog uit hoe je een framework vindt dat ook daadwerkelijk aan de genoemde eisen voldoet.
Het derde en laatste deel van “Het juiste framework vinden voor je webapplicatie” lees je hier op de OGD-nieuwsblog.
Misschien vind je dit leuk
Anderen hebben deze artikelen gelezen