Beveiliging van websites 2/3

March 26, 2020

In dit driedelige blog zullen wij het kort hebben over hoe je bepaald wat voor maatregelen nodig of gewenst zijn, en een paar technische veiligheidsmaatregelen uitlichten.


Dit artikel is het tweede gedeelte uit onze serie over beveiliging.
Heb je het 1e gedeelte gemist? Deze is hier te vinden.


Email spoofing

De meeste mensen openen Outlook of openen hun webmail om e-mails te versturen en verwachten dat zij de enige zijn die dat e-mailadres kunnen gebruiken. Niets is minder waar. In de praktijk kun je doen alsof een e-mail komt van ieder willekeurig e-mailadres. Wanneer een afzenderadres wordt vervalst heet dit email spoofing.

Om te voorkomen dat spammers of andere kwaadwillenden e-mails kunnen versturen vanaf jouw domein kunnen verschillende veiligheidsmaatregelen genomen worden. Een SPF record is een regel in de DNS die aangeeft van welke ip-adressen mail mag worden verzonden voor een domein. Daarnaast kan DKIM worden gebruikt om specifieke berichten digitaal te ondertekenen en DMARC om aan te geven wat met berichten moet gebeuren die niet voldoen aan een of alle SPF en DKIM-regels.

Komen e-mails niet binnen, of klagen mensen dat ze mails binnen krijgen van jouw e-mailadressen die niet door jou verstuurd zijn, dan kan dit vaak opgelost worden door te kijken naar deze regels. Hier kunnen wij uiteraard bij helpen.

Cross-site-scripting

In het verleden kwam het nog wel eens voor dat iemand een speciale link deelde naar een zoekmachine. Wanneer je erop klikte danste de letters speels over het scherm. Of misschien meer recent, een website waar je een popup met de tekst “XSS” kreeg.

Cross-site scripting, ook wel XSS genoemd, is een van de vele veiligheidsrisico’s die zijn geïdentificeerd sinds het opkomen van het internet. Bij XSS kan iemand een script injecteren op een pagina en daarmee bijvoorbeeld de pagina overnemen. Soms doen mensen daar grappige dingen mee, zoals bij het eerste voorbeeld, maar in de meeste gevallen zijn de bedoelingen meer kwaadwillend. Het stelen van inloggegevens bijvoorbeeld, of een redirect naar een andere site.

Het is natuurlijk de taak van de programmeur om te voorkomen dat dit mogelijk is door data goed te filteren, maar in de praktijk komt het vaak genoeg voor dat browsers de X-XSS-Protection-header hebben geïntroduceerd. Wanneer deze header wordt opgestuurd door een webserver probeert de browser de gebruiker te beschermen tegen dingen die waarschijnlijk cross-site-scripting zijn.

Op dezelfde wijze bestaat de X-Content-Type-Options header. Normaal gesproken zal een browser proberen te detecteren wat een bestand voorstelt door te kijken naar de inhoud van een bestand. Een aanvaller kan echter bijvoorbeeld proberen om een script of opmaak te verbergen in een afbeelding. Door het automatisch detecteren van de content kan een browser dan proberen deze afbeelding te lezen als een stylesheet of script. De header staat toe om “nosniff” als waarde te hebben, waarbij de browser strikter is in welke bestanden worden geïnterpreteerd als afbeeldingen, stylesheets en scripts. Hiermee beschermt het ook tegen XSS.

Vertrouwde bronnen

De meeste websites laden slechts afbeeldingen, scripts en styling van een klein aantal domeinen. In veel gevallen zelfs slechts van het eigen domein. Om het risico van bijvoorbeeld XSS en stored XSS-aanvallen te verkleinen kan een website definiëren van welke domeinen, protocollen of inline elementen bepaalde dingen geladen mogen worden. De browser weigert alle andere dingen die geladen zouden worden. Dit heet de Content Security Policy.

Wanneer een aanvaller nu via een beveiligingslek probeert om bijvoorbeeld een script in te laden, wordt dit script geblokkeerd omdat het niet van een domein komt waar je scripts van verwacht. Waar sommige maatregelen gevaren volledig neutraliseren is dit een maatregel die het moeilijker maakt om gevaren te exploiteren.

Is uw organisatie in de afgelopen tijd veranderd? Sluit uw threat model nog steeds aan op de werkelijkheid? Neem vrijblijvend contact met ons op om te kijken wat wij voor jou kunnen betekenen.

Geschreven door onze Full Stack developer: Dico

Related articles