Webontwikkeling gaat verder dan alleen het creëren van een functionele website. Het beveiligen van een webapplicatie is een cruciaal aspect dat vaak over het hoofd wordt gezien. Bij het overnemen van websites, zelfs relatief recent gebouwde sites uit 2018, werd ik geconfronteerd met verouderde praktijken en een gebrek aan veiligheidsmaatregelen die hun kwetsbaarheid voor aanvallen blootlegden.

Het gebruik van op maat gemaakte websites biedt een zekere mate van veiligheid in vergelijking met bekende CMS-platformen zoals Drupal of WordPress, die vaak het doelwit zijn vanwege hun alomtegenwoordigheid. Deze platforms worden door miljoenen websites gebruikt, waardoor het aantrekkelijk is voor hackers om kwetsbaarheden op grote schaal uit te buiten. Maar laten we niet vergeten, geautomatiseerde aanvallen zijn niet selectief. Ze scannen en testen websites op zwakheden, ongeacht het platform.

Bij recente overnames viel op dat veel websites op een 'old-school' manier waren opgebouwd, met gebruik van verouderde webontwikkelingstools zoals Frontpage, Netscape Composer, Visual Studio en Dreamweaver. Deze werkwijze, gebaseerd op het kopiëren en herhalen van code, resulteerde in overbodig uitgebreide en onnodig gecompliceerde scripts.

De afwezigheid van een duidelijke architectuur zoals het Model-View-Controller (MVC) model werd opgemerkt in de oude codebase. Het gebrek aan modellen en de aanwezigheid van onveilige SQL-statements zoals 'select * from producten where naam = $_GET('zoek')' wijzen op ernstige veiligheidsrisico's.

Naast het ontbreken van centrale databasetoegang, ontdekte ik dat databaseverbindingen soms midden in een script werden gesloten, resulterend in fouten die vaak werden genegeerd door PHP-configuraties. Dit is echter een tijdbom, vooral bij het upgraden naar hogere PHP-versies.

Een ander veelvoorkomend probleem was het versnipperen van processtromen over meerdere pagina's, wat leidde tot herhaling van vergelijkbare HTML-structuren. Bijvoorbeeld, bij het registreren van een account werd het proces uitgesmeerd over verschillende pagina's zonder een coherente stroom van datacontrole.

Het is duidelijk dat een gestructureerde aanpak essentieel is bij het ontwikkelen van webapplicaties. De overstap naar een framework is een stap in de goede richting, waarbij enkele praktische richtlijnen moeten worden gevolgd:

  • Objectgeoriënteerd coderen biedt niet alleen overzichtelijke code, maar het maakt ook centralisatie van processen mogelijk.
  • Gevoelige gegevens moeten zorgvuldig worden overwogen voordat ze in de database worden opgeslagen.
  • Het gebruik van HTTPS is een standaardpraktijk geworden.
  • Upgraden van beveiligingsalgoritmes zoals MD5 en SHA1 naar sterkere alternatieven is essentieel bij het centraliseren van code.
  • Het controleren op SQL-injectie wordt vergemakkelijkt door het centraliseren van database-interacties.
  • Korte en efficiënte code kan de stroom van processen verbeteren.
  • Het minimaliseren van externe libraries vermindert kwetsbaarheden en vraagt om periodieke evaluatie van hun noodzaak.
  • Ingebouwde veiligheidsmaatregelen zoals wachtwoordcomplexiteit moeten worden overwogen.
  • Vermijd het gebruik van session_id in URL's, en overweeg het gebruik van Javascript Nonce voor extra beveiliging.

In het kader van de OWASP Top 10 biedt het toepassen van deze best practices een solide basis voor veiligere webapplicaties.

Tags gerelateerd aan dit artikel:

Domeinnamen

Prijzen - 500+ Extenties

Blog Categorie