Bij het maken van een website komt er veel meer kijken dan slechts het ontwerpen en ontwikkelen van een mooie en functionele site. Doordat WordPress steeds populairder wordt, wordt het aantrekkelijk voor hackers om uw website te exploiteren door beveiligingslekken te vinden en te misbruiken.
In dit artikel ga ik het hebben over het .htaccess
bestand, en bekijken we een aantal code snippets die u helpen om uw site te beveiligen.
Wat is het WordPress .htaccess bestand?
Een .htaccess
bestand is een optioneel configuratie bestand. Dit bestand is een samenstelling van zogenaamde modules, die ervoor zorgen dat uw website de correcte functionaliteit heeft. Middels het .htaccess
bestand kunt u bepaalde configuratiewaardes overschrijven die standaard door de webserver ingesteld zijn.
Als u er bijvoorbeeld voor kiest om een aangepaste URL structuur te maken voor uw permalinks in het WordPress dashboard, zal de .htaccess
file automatisch worden aangepast met de benodigde ‘rewrite rules’.
U kunt dus verschillende instellingen in dit configuratie bestand opslaan, zoals o.a. het blokkeren van IP adressen, zorgen dat een bestand of map niet publiekelijk toegankelijk is, het met een wachtwoord beschermen van een directory, browser caching aanzetten, enz.
Waar vindt u het .htaccess bestand?
De .htaccess
file is terug te vinden in de ‘root’ van de FTP-server. Dit is de hoofdmap waarin alle bestanden van uw website worden opgeslagen. Om deze hoofdmap te vinden, heeft u een FTP-programma (bijv. FileZilla) nodig, waarmee u verbinding kunt maken met uw FTP-server.
De meeste webhosting bedrijven leveren ook een online file manager waarmee u de inhoud van de .htaccess
file ook zelf kunt aanpassen.
HTTP-headers om uw website te beveiligen
Hackers kunnen vele verschillende methoden gebruiken om persoonlijke gegevens te stelen. Eén van de bekendste methoden om bepaalde informatie te achterhalen, is Cross-Site Scripting (XSS).
Bij Cross-Site Scripting injecteert een hacker kwaadaardige code (JavaScript) in een browser of in een kwetsbare website of webapplicatie. Deze aanvallen laten uw gebruikers openstaan voor cookie diefstal, informatie diefstal, account kaping, clickjacking en meer.
Moderne webbrowsers hebben tegenwoordig een krachtige beveiliging ingebouwd, maar u moet de browser vertellen dat u die beveiligingsmechanismen voor uw website wilt gebruiken. Dit kan worden geactiveerd door specifieke HTTP-headers in te stellen in uw .htaccess
bestand.
X-Frame-Options
De HTTP-header van X-Frame-Options
kan worden gebruikt om aan te geven of een browser al dan niet toestemming moet hebben om een pagina in een <frame>
of <iframe>
weer te geven. Dit kan worden gebruikt om clickjacking aanvallen te voorkomen door ervoor te zorgen dat uw inhoud niet is ingesloten in andere sites.
Door in onderstaande code de richtlijn op DENY
in te stellen, wordt er voorkomen dat onze pagina’s in frames worden weergegeven, zelfs vanaf onze eigen website.
# Don't allow any pages to be framed - Defends against CSRF Header set X-Frame-Options SAMEORIGIN
X-XSS-Protection
Deze HTTP-header is exclusief voor Internet Explorer 8 en 9, het schakelt een cross-site scripting-beveiliging in, die standaard is uitgeschakeld omdat het mogelijk sommige websites zou kunnen breken. Gebruik de header X-XSS-Protection "1; mode = block"
om het XSS-filter in te schakelen.
# Turn on IE8-IE9 XSS prevention tools Header set X-XSS-Protection "1; mode=block"
X-Content-Security-Policy
Content Security Policy (CSP) is een extra beveiligingslaag die helpt bij het detecteren en verminderen van bepaalde soorten aanvallen, waaronder Cross Site Scripting (XSS) en data-injectie aanvallen. Deze aanvallen worden voor van alles gebruikt, van gegevensdiefstal tot beschadiging van de site of verspreiding van malware.
Deze richtlijn instellen op "allow 'self';"
zal voorkomen dat onze pagina’s extern JavaScript laden of inline JavaScript uitvoeren. Onze website zal veiliger zijn tegen XSS-aanvallen omdat het voor een aanvaller moeilijker wordt om JavaScript in de browser van de bezoeker uit te voeren via een ingeframe
de pagina op onze website of via een SQL-injectie.
Er zijn veel instellingen beschikbaar voor deze HTTP-header maar ik raad u aan om de Mozilla Wiki-pagina te lezen voordat u CSP gebruikt, omdat u bepaalde externe inhoud moet toestaan als u bijvoorbeeld Google Adsense gebruikt.
# Only allow JavaScript from the same domain to be run. # Don't allow inline JavaScript to run. Header set X-Content-Security-Policy "allow 'self';"
X-Content-Type-Options: nosniff
Deze HTTP header voorkomt “content sniffing (ook wel MIME-sniffing genoemd)” in Internet Explorer. Elke website laadt bestanden, deze bestanden (content) zijn altijd van een bepaald type (MIME-type). Content sniffing houdt meestal in dat een browser wordt misleid om een script uit te voeren dat is vermomd als een ander bestandstype.
Als uw site bijvoorbeeld gebruikers toestaat afbeeldingen te uploaden en te delen, kan een aanvaller mogelijk een speciaal vervaardigd afbeeldingsbestand uploaden dat JavaScript code bevat. Een browser die content ‘snifft’, kan dan worden misleid om het schadelijke bestand uit te voeren.
Om content-sniffing aanvallen te verminderen, stelt u de response header X-Content-Type-Options
in op nosniff
. Deze HTTP header instrueert de browser om het response content type niet te negeren. Dus als de server zegt dat de inhoud tekst / html is, zal de browser deze ook weergeven als tekst / html.
# prevent mime based attacks Header set X-Content-Type-Options "nosniff"
HTTP Strict Transport Security header
Als een website een verbinding via HTTP accepteert en omleidt naar HTTPS, kunnen bezoekers in eerste instantie communiceren met de niet-gecodeerde versie van de site voordat ze worden omgeleid. Dit creëert een kans voor een man-in-the-middle aanval. De omleiding kan worden gebruikt om bezoekers naar een kwaadaardige site te leiden in plaats van naar de beveiligde versie van de oorspronkelijke site.
De HTTP Strict-Transport-Security
header informeert de browser dat deze nooit een site met HTTP mag laden en in plaats daarvan alle pogingen om toegang tot de site via HTTP te krijgen, automatisch moet converteren naar HTTPS-verzoeken.
# Enable HTTP Strict Transport Security (HSTS) Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
Beveilig uw wp-config.php bestand
In het wp-config.php
bestand staat gevoelige informatie, zoals de database naam en toegangsgegevens en daarom is het belangrijk om deze zo veel mogelijk te beschermen tegen hackers. Onderstaande regels blokkeren in feite de toegang tot uw wp-config.php
file tegen hacking en code aanpassingen.
# Protect wp-config.php file <Files wp-config.php> order allow, deny deny from all </Files>
Blokkeer Directory Browsing
Directory Browsing wordt gebruikt door hackers om er achter te komen welke mappen en bestanden op uw hostingserver staan. Het is daarom een groot veiligheidsrisico. Plaats onderstaande code in uw .htaccess
bestand om directory browsing uit te schakelen.
# disable directory browsing Options All -Indexes
Beveilig het .htaccess bestand
And last but not least .. uiteraard is het ook raadzaam om uw .htaccess
file ook te beveiligen, want via het .htaccess
bestand kunnen hackers ook invloed uitoefenen op uw website! Het is daarom belangrijk dat deze niet ingezien kan worden, of kan worden aangepast.
Voeg hiervoor onderaan uw .htaccess
de volgende regels toe:
# protect .htaccess <Files ~ "^.*\.([Hh][Tt][Aa])"> Order allow,deny Deny from all Satisfy all </Files>
Bottom-line:
Er is op het internet nogal wat commotie over het .htaccess
bestand en of dit bestand nog niet overbodig is. Hoewel alles vanuit het .htaccess
bestand ook op andere manieren te regelen is zorgt het .htaccess
bestand ervoor dat gebruikers (zeker op shared hosting servers) vrijheid krijgen in de manier waarom hun website / domein omgaat met aanvragen naar de webserver.
Nog Geen Reacties
Laat een Reactie achter