Allow en Deny in htaccess bestand met voorbeelden

In dit artikel word het gebruik van Allow, Deny en Require in het .htaccess bestand uitgelegd om de toegang tot webpagina's te controleren. Als je bijvoorbeeld wordt getroffen door een aanval vanaf een specifiek bereik van IP-adressen, kun je regels toevoegen om ze te blokkeren op basis van het IP-adres of andere variabelen. Met Apache 2.4 zijn er wijzigingen in de richtlijnen die worden gebruikt voor toegangscontrole. In dit artikel worden de wijzigingen uitgelegd en worden enkele voorbeelden gedeeld om je te helpen de beste oplossing voor je site te implementeren.

 

Wijzigingen in Apache 2.4


Apache 2.2 gebruikt de authz_host_module om toegang te controleren met behulp van de regels Deny, Allow en Order.

Apache 2.4 gebruikt ook de authz_host_module voor toegangscontrole, maar gebruikt ook de authz_core_module, die de nieuwe Require-richtlijn gebruikt.

Dus eigenlijk zijn de regels om de toegang te regelen verschillend, afhankelijk van de versie van Apache. Om hierbij te helpen, heb ik hieronder een aantal voorbeelden gegeven.

 

Codevoorbeelden


Hier zijn enkele voorbeelden die de verschillende vereiste syntaxis vergelijken, afhankelijk van de versie van Apache.

Belangrijk! Gebruik geen 2.2 en 2.4 regels op dezelfde server, dit kan problemen en/of fouten veroorzaken. Een workaround hiervoor is het gebruik van Voorwaardelijke Richtlijnen, zoals hieronder wordt uitgelegd.


Weiger alle verzoeken

# DENY ALL REQUESTS

# Apache 2.2
Order deny,allow
Deny from all

# Apache 2.4+
Require all denied

 

Sta alle verzoeken toe

# ALLOW ALL REQUESTS

# Apache 2.2
Order allow,deny
Allow from all

# Apache 2.4+
Require all granted

 

Toegang weigeren op basis van hostnaam

# DENY ACCESS TO VOORBEELD.NL

# Apache 2.2
Order Allow,Deny
Allow from all
Deny from voorbeeld.nl

# Apache 2.4+
<RequireAll>
    Require all granted
    Require not host voorbeeld.nl
</RequireAll>

 

Merk op dat <RequireAll> en Require all granted vereist zijn wanneer je iets meer doet dan ofwel Require all granted of Require all denied (zoals getoond in de bovenstaande voorbeelden). Hier nog een paar voorbeelden om het concept verder te illustreren met Require/All.

Toegang weigeren op basis van IP-adres

# DENY ACCESS TO IP ADDRESS

# Apache 2.2
Order Allow,Deny
Allow from all
Deny from 111.111.111.111
Deny from 222.222.222.222
Deny from 123.123.123.123

# Apache 2.4+
<RequireAll>
    Require all granted
    Require not ip 111.111.111.111
    Require not ip 222.222.222.222
    Require not ip 123.123.123.123
</RequireAll>


Toegang tot een specifiek bestand weigeren

# DENY ACCESS TO FILE

# Apache 2.2
<Files ~ "example\.txt">
	Order Allow,Deny
	Allow from all
	Deny from 123.123.123.123
</Files>

# Apache 2.4+
<Files ~ "example\.txt">
	<RequireAll>
		Require all granted
		Require not ip 123.123.123.123
	</RequireAll>
</Files>


Notitie: gebruik niet zowel 2.2- als 2.4-richtlijnen op dezelfde server. Dit kan fouten veroorzaken. Gebruik alleen de code die van toepassing is op jouw versie van Apache. Of, als je een modulair, plug-and-play-fragment wilt maken dat kan worden toegevoegd aan elke Apache-versie 2.2 of 2.4+, bekijk dan de techniek voor Voorwaardelijke Richtlijnen hieronder.


Voorbeeld: Voorwaardelijke Richtlijnen


In sommige gevallen weet je misschien niet welke versie van Apache je gebruikt. In dat geval zouden de volgende voorwaardelijke richtlijnen je kunnen helpen. Je kunt de volgende code gebruiken op elke Apache-server versie 2.2 of 2.4+.

 

# Apache 2.2
<IfModule !authz_core_module>
	Order Deny,Allow
	Deny from all
	Allow from 123.123.123.123
</IfModule>

# Apache 2.4+
<IfModule authz_core_module>
	<RequireAll>
		Require ip 123.123.123.123
	</RequireAll>
</IfModule>

 

Indien opgenomen via .htaccess, zal deze code de juiste versie van Apache detecteren en de juiste richtlijnen gebruiken voor toegangscontrole. Dit is hoe het werkt:

Als de server Apache 2.2 is, weten we dat de authz_core_module niet bestaat. Dus alle regels die in de eerste <IfModule>-container zijn opgenomen, worden alleen uitgevoerd op Apache 2.2.

Of als de server Apache 2.4+ is, weten we dat de authz_core_module bestaat. Dus alle regels die in de tweede <IfModule>-container zijn opgenomen, worden alleen uitgevoerd op Apache 2.4 en hoger.

Dit zijn natuurlijk slechts voorbeelden om te laten zien hoe de juiste regels voor toegangscontrole kunnen worden geïmplementeerd. Raadpleeg de Apache-docs en pas de code aan voor je specifieke behoeften.


  • 6 gebruikers vonden dit artikel nuttig
Was dit antwoord nuttig?

Gerelateerde artikelen

Gratis Online Favicon Generator

Wanneer we het over handige tools hebben dan mag een gratis online favicon generator niet...

Hoe kan ik een MySQL Database aanmaken?

Tegenwoordig maken de meeste websites zoals Joomla, Drupal, Magento en Wordpress gebruik van een...

Hoe maak ik verbinding met SSH of SFTP?

Wil je via SSH verbinden met de server of gebruik maken van SFTP?Deze SSH handleiding legt uit...

Hoe upload ik mijn website naar de webserver?

Wanneer je een webhosting pakket en domeinnaam hebt aangeschaft dan wil je daar natuurlijk je...

Je website snelheid verbeteren met cache headers

Naast snelle hosting kun je je website optimaliseren om de laadtijd van je website te verkorten....