afschermen directory en user management met PHP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
Voor een muziekvereniging maak ik gebruik van een digitaal archief via het GNU-project ONEdotOH. Dat is een eenvoudige webinterface voor het beheren van bepaalde mappen; men kan dan dus bestanden up- en downloaden, bewerken, etc. Gevolg is dat wanneer ieder bestuurslid hier maar braaf zijn/haar bestanden in plaatst, er vanzelf een centraal geplaatst digitaal archief ontstaat.

Nu gaat het niet zo zeer om specifiek dit programma, want hier zijn er wel meer van. Waar ik meer in het algemeen mee zit is de volgende vraag.

Op dit moment is de directory afgeschermd met een .htaccess bestand. Dat heeft als groot voordeel dat de bestanden in het archief zelf ook afgeschermd zijn. Het heeft als nadeel dat ik hetzij voor iedere user een wachtwoord moet verzinnen, hetzij een wachtwoord steeds bij bestuurswissels moet veranderen. Liever zou ik hier een eenvoudige interface via PHP voor schrijven waarbij de gebruiker het wachtwoordbeheer verder helemaal zelf kan doen. Dat ontlast het beheer voor mij (itt tot htaccess kan ik dan bijv. een nieuw wachtwoord laten mailen).

Maar... hoe beveilig ik die bestanden dan? In de handleiding van PHP over HTTP_AUTH vind ik uitleg hoe ik via PHP een prompt voor wachtwoord afdwing. Ik wil juist het omgekeerde: ik wil dat het PHP-script aan Apache een bepaald wachtwoord doorgeef, zodat een gebruiker eenmaal ingelogd een bepaalde directory wel kan benaderen.

Dus: inloggen op PHP, vervolgens zorgt dat script dat er toegang komt tot een met HTACCESS beveiligde directory. Dan hoef ik slechts eenmaal een wachtwoord te verzinnen en dat supergeheim te houden en kunnen de users zelf hun eigen wachtwoord verzinnen.

Enig idee? De volgende topics helpen me helaas nog niet echt verder:
[rml][ PHP/htaccess]Uitlezen PHP_AUTH_USER[/rml]
[rml][ php] PHP laten zorgen voor Apache .htaccess[/rml]

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Ik denk dat de makkelijkste weg wordt om met PHP de htacces file te manipuleren. In deze post staat iig hoe wachtwoorden in een .htacces er uit moeten komen te zien.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • TromboneFreakus
  • Registratie: Juli 2001
  • Laatst online: 01-08-2023
T-MOB schreef op donderdag 01 december 2005 @ 21:27:
Ik denk dat de makkelijkste weg wordt om met PHP de htacces file te manipuleren. In deze post staat iig hoe wachtwoorden in een .htacces er uit moeten komen te zien.
Maar ja... dan komt er nog die wachtwoord prompt tussendoor. Ik wilde juist iets om de gebruiker daar niet mee lastig te vallen, maar anderzijds de directory wel beveiligen. De hele wereld mag de bestanden niet zien.

Nu dacht ik er aan simpelweg een directory buiten de map 'public_html' te pakken op de server, maar hier lijkt PHP ook niet bij te kunnen. Is dat juist, of doe ik wellicht toch iets fout dan?? Het zou immers het voordeel bieden van een niet publiek toegankelijke map (dus afgeschermd door de wereld), zonder verder gedoe rond wachtwoorden.

Of is het in jullie ervaring voldoende om de index voor een map uit te zetten, zodat alleen de persoon die in theorie de exacte bestandslocatie weet toegang tot specifieke bestanden uit dat digitaal archief zou hebben??

Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Wat wil je precies bereiken dan? Als je een bepaald persoon (of groep personen) ergens toegang tot wil geven zul je minstens een keer de gebruiker moeten authenticeren. Je ontkomt er dus bijna niet aan om een keer een wachtwoord prompt op te gooien. Met HTTP authenticatie zal dit een keer per gebruikerssessie gebeuren. Zolang de client de browser niet sluit zal hij de authentcation headers blijven meesturen naar jouw site.
Voordeel van HTTP authenticatie is dat het voor jou vrij makkelijk op directory niveau te regelen is. Je zet rechten op de dir en elk bestand dat er verder in belamd is beveiligd.

Alternatief is om zelf wat met PHP in elkaar te steken. Je kunt bijvoorbeeld een script schrijven dat de authenticatie regelt en een directory simuleert. De daadwerkelijke bestanden zet je dan ergens buiten de web-accessible directory. Met behulp van de PHP functies readfile() of fpassthru() kun je ze dan naar de gebruiker sturen. Zorg dan wel dat a) de gebruiker gelocked blijft in de specifieke directory (en dus niet bijvoorbeeld ../../../../etc/passwd kan benaderen). Daarnaast moet je nog zelf nog zorgen voor de juiste mimetypes.

Het alleen bekend maken van de url aan de genodigden is imho geen beveiliging. De kans dat een willekeurig iemand dat gaat vinden is ten eerste al aanwezig. Daarnaast komt er vast een bestuurslid dat een linkje naar rapport X even doormailt aan persoon Y dat het ook moet lezen...

Regeren is vooruitschuiven