Beveiliging van mappen
Ik ben momenteel bezig met een website waarop oa. handleidingen kunnen worden upgeload, deze worden dan in de map /handleidingen in de root gezet.
Nu is het de bedoeling dat die handleidingen alleen kunnen worden gedownload nadat men is ingelogd, en men genoeg machtigingen heeft om dat bestand te downloaden. Oftewel, eerst de status controleren dmv PHP, en als diegene genoeg privileges heeft om dat bestand te downloaden, het bestand geven.
Dit is ook het probleem niet, dat wil allemaal prima. Het punt is dat alle bestanden nog steeds direct te benaderen zijn, dus als men gewoon naar www.mijndomein.nl/handleidingen/merk/handleiding.pdf dan wordt het bestand ook ook gedwonload, en dat moet worden voorkomen!
Dus, voorbeeldje
mijndomein.nl/handleiding/merk/handleiding.pdf Moet fout geven
mijndomein.nl/download.php?id=1 Controleert inlogstatus, en geeft het bestandje zodra er genoeg machtigingen zijn.
Iemand een idee hoe ik dit oplos?
Je kunt denk ik beter HTACCESS authenticatie gebruiken
Dat zou betekenen dat de gebruiker voor een tweede keer zou moeten inloggen, toch?
@Martijn
RentAGame?
Nope...ik ben niet van RentAGame.. ;)
Nee ok maar ik ben met project bezig en daarmee moeten we dus hetzelfde maken.. dus ik dacht he misschien is hij met zelfde project bezig :P
je kan geloof ik wel HTACCESS authenticatie gebruiken in PHP maar niet andersom.
Vervolgens laat je 'manuals.php' de handleidingen outputten nadat deze checked of je daar toegang toe hebt..
bijv.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
$merk = 'xxx';
$handleiding = 'xxx.pdf';
if($toegang_tot_merk && $toegang_tot_handleiding)
{
$path = '/handleidingen/' . $merk . '/' . $handleiding;
if(is_file($path))
output_file($path);
}
$handleiding = 'xxx.pdf';
if($toegang_tot_merk && $toegang_tot_handleiding)
{
$path = '/handleidingen/' . $merk . '/' . $handleiding;
if(is_file($path))
output_file($path);
}
Voor het uitwerken van de functie 'output_file()' moet je je richten op headers, zie ook de vele tut's over het outputten van bvestanden op deze site.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
ErrorDocument 403 http://www.nvmac.nl/403.html
order allow,deny
allow from XX.XX.XXX.XXX (hier de ip van je website)
deny from all
?>
ErrorDocument 403 http://www.nvmac.nl/403.html
order allow,deny
allow from XX.XX.XXX.XXX (hier de ip van je website)
deny from all
?>
nadeel is dan wel dat je de pfd niet meer zo kunt openen in de browser...
als je daar een oplossing voor weet is dit geen zinloze post...
# Start rewrite engine
RewriteEngine On
# Catch blocked folders
RewriteRule ^(handleidingen)(/(.*)?)?$ manuals.php [NC,L]
Het zou zo moeten te doen zijn met .htaccess