(I know, de topics blijven maar komen
)
Anyway, weer een nieuw probleem op de baan. Twee zelf!
Ik slaag er maar niet in om deze twee relatief eenvoudige problemen te omzeilen. Hier zijn ze:
1) Ik draai een webapp op mijn server, die van enkele scripts in een include directory gebruik maakt. Nu wou ik enkel de php's in de root directory toestaan, en al de rest blokkeren. Dit deed ik als volgt:
Dit stukje code laat PHP's toe, terwijl al de rest geblokkeerd is door een "deny from all" in de parent directory.
Ik kwam echter tot de conclusie dat PHP's in subfolders van mijn webapp, nog altijd toegankelijk waren! Dit was natuurlijk niet de bedoeling, en ik zou dit liever kunnen oplossen zonder een "deny from all" in elke subfolder.
Ik had dit proberen oplossen met een negatieve regex, die scant op backslashes. However, dit bleek niet te werken! Na veel opzoekingswerk kwam ik tot de conclusie dat Files & FilesMatch scant op de bestandsnaam, en niet op het pad relatief aan de .htaccess...
2) In dezelfde htaccess wil ik een "Deny from all" van de parent directory, overriden. Dit wou ik doen door alle .php bestanden toe te laten (zie vraag 1), maar ook een call naar de directory zelf toe te laten. Uitgelegd met voorbeeldjes:
/applications -> dit wil ik blokkeren
/applications/webapp/index.php -> dit wil ik toelaten
/applications/webapp -> dit wil ik toelaten
Daarvoor gebruikte ik volgende HTACCESS
( Voor het moment list ik dus alle toegankelijke PHP bestanden, hopelijk kan ik dit vervangen door een mooiere oplossing uit vraag 1
)
Probleem hier is, dat de "^$" regex mij met volgende situatie opzadelt:
/applications/webapp/ -> toegelaten, is de bedoeling
/applications/webapp -> blocked, zou niet mogen!
Apache's log geeft me het volgende:
Nu dacht ik eerst dat dit zou liggen aan de "deny from all" in de parent directory, maar niets is minder waar: als ik voor te testen een "deny from none" toevoeg aan de .htaccess in de webapp folder, kan ik wél surfen naar /applications/webapp.
Dus in short nog even de layout van mijn server:
/applications/.htaccess -> deny from all
/applications -> blocked
/applications/webapp/.htaccess -> zie 1) en 2), FilesMatch "$^|\.php"
/applications/webapp -> blocked (niet de bedoeling)
/applications/webapp/ -> toegelaten
/applications/webapp/index.php -> toegelaten
/applications/webapp/include/include.php -> toegelaten (niet de bedoeling)
Alvast bedankt voor alle reacties,
maleadt
Anyway, weer een nieuw probleem op de baan. Twee zelf!
Ik slaag er maar niet in om deze twee relatief eenvoudige problemen te omzeilen. Hier zijn ze:
1) Ik draai een webapp op mijn server, die van enkele scripts in een include directory gebruik maakt. Nu wou ik enkel de php's in de root directory toestaan, en al de rest blokkeren. Dit deed ik als volgt:
code:
1
2
3
4
| <FilesMatch "\.php$">
Deny from none
Satisfy any
</FilesMatch> |
Dit stukje code laat PHP's toe, terwijl al de rest geblokkeerd is door een "deny from all" in de parent directory.
Ik kwam echter tot de conclusie dat PHP's in subfolders van mijn webapp, nog altijd toegankelijk waren! Dit was natuurlijk niet de bedoeling, en ik zou dit liever kunnen oplossen zonder een "deny from all" in elke subfolder.
Ik had dit proberen oplossen met een negatieve regex, die scant op backslashes. However, dit bleek niet te werken! Na veel opzoekingswerk kwam ik tot de conclusie dat Files & FilesMatch scant op de bestandsnaam, en niet op het pad relatief aan de .htaccess...
2) In dezelfde htaccess wil ik een "Deny from all" van de parent directory, overriden. Dit wou ik doen door alle .php bestanden toe te laten (zie vraag 1), maar ook een call naar de directory zelf toe te laten. Uitgelegd met voorbeeldjes:
/applications -> dit wil ik blokkeren
/applications/webapp/index.php -> dit wil ik toelaten
/applications/webapp -> dit wil ik toelaten
Daarvoor gebruikte ik volgende HTACCESS
code:
1
2
3
4
5
| DirectoryIndex index.php
<FilesMatch "^$|(blame|comp|diff|dl|filedetails|form|index|listing|log|rss|wsvn)\.php">
Deny from none
Satisfy any
</FilesMatch> |
( Voor het moment list ik dus alle toegankelijke PHP bestanden, hopelijk kan ik dit vervangen door een mooiere oplossing uit vraag 1
Probleem hier is, dat de "^$" regex mij met volgende situatie opzadelt:
/applications/webapp/ -> toegelaten, is de bedoeling
/applications/webapp -> blocked, zou niet mogen!
Apache's log geeft me het volgende:
code:
1
| client denied by server configuration: /var/www/public/applications/webapp |
Nu dacht ik eerst dat dit zou liggen aan de "deny from all" in de parent directory, maar niets is minder waar: als ik voor te testen een "deny from none" toevoeg aan de .htaccess in de webapp folder, kan ik wél surfen naar /applications/webapp.
Dus in short nog even de layout van mijn server:
/applications/.htaccess -> deny from all
/applications -> blocked
/applications/webapp/.htaccess -> zie 1) en 2), FilesMatch "$^|\.php"
/applications/webapp -> blocked (niet de bedoeling)
/applications/webapp/ -> toegelaten
/applications/webapp/index.php -> toegelaten
/applications/webapp/include/include.php -> toegelaten (niet de bedoeling)
Alvast bedankt voor alle reacties,
maleadt