[php] PHP laten zorgen voor Apache .htaccess

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De topictitel is misschien een beetje vaag, net als het probleem ;). Elke nacht worden op m'n servertje een aantal HTML-files gegenereerd door een stats-programma voor verschillende users. Die maakt mooie grafiekjes e.d., leuk om te zien wie er allemaal wanneer waar is geweest.
Echter, niet iedereen moet alle stats kunnen zien, users mogen alleen hun eigen stats bekijken. Alle users staan in /etc/passwd en /etc/shadow (shadow is alleen leesbaar voor root!), en op basis daarvan moet er geauthenticeerd worden.

Ik heb nu dus een mooi scriptje index.php dat de user laat inloggen. De username/password wordt gecontroleerd op basis van een dummie FTP-login door PHP. Vervolgens wordt een user doorgelaten naar de directory /stats/deusername. Echter, je kunt deze beveiliging dus laten omzeilen door gewoon direct naar /stats/deusername te surfen! Een oplossing is een .htaccess in /stats/deusername plaatsen, maar die .htaccess kan de username/password niet controleren!

Ik wil dus graag dat apache van PHP aanneemt dat de user in orde is en toegang tot /stats/deusername verschaft, maar ik heb geen idee hoe dat te doen. Voor de duidelijkheid: apache moet dus alleen maar zorgen dat niet zomaar iemand direct naar /stats/deusername surft, maar mag geen username/password controleren, want dat kan ie niet!

Acties:
  • 0 Henk 'm!

  • reddevil001
  • Registratie: Januari 2002
  • Laatst online: 18-09 21:03
Je kan de html-pagina's inlezen via een php-script. Je weet immers welke user het is, dus je leest een html-pagina op basis van de user en toont deze.
Uiteraard zet je dan even de html-pagina's op een onbereikbare plek voor de webserver

code:
1
echo file_get_contents($_SERVER["DOCUMENT_ROOT"] ."/../stats/". $_SERVER["REMOTE_USER"] ."/". $filename);

None


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Probleem is alleen, dat er ongeveer 10 HTML (!) pagina's per user gegenereerd worden die allemaal naar elkaar linken, dus deze oplossing gaat niet echt werken.
Wat ik zeg maar wil, is dat PHP zorgt voor authenticatie en apache die PHP gelooft dat het in orde is d.m.v. een .htaccess file.

Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
Misschien je manier van beveiligen anders opstellen?

|>


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zou niet weten hoe ik een directory (zonder PHP) inclusief subdirectories anders kan beveiligen, dan m.b.v. een .htaccess file...

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Waarom gebruik je in dit geval sowieso inloggen via PHP?

Kun je niet alleen authenticatie via een .htaccess-file maken? Zodat dus de browser de gebruiker vraagt om een wachtwoord etc..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja, maar dan kan ik dus geen authenticatie via FTP doen (dus via /etc/shadow), omdat Apache dat niet ondersteunt! Dat zou betekenen dat de user twee passwords krijgt, eentje voor alle systeemtaken, en eentje voor de statistieken, en dat wil ik nu juist voorkomen!

[ Voor 40% gewijzigd door Verwijderd op 17-06-2004 14:42 ]


Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

moet dat dan? Regel dat gewoon netjes met je .htpasswd en .htaccess. Lijkt mij de meest logische keuze.

En als je dan moeilijk wil doen met html, laat een php script die inderdaad inlezen, en gooi in .htaccess een stel rewrite rules.

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Kun je PHP niet het wachtwoord van de FTP laten gebruiken om een .htpasswd en .htaccess te maken?

[ Voor 4% gewijzigd door Osiris op 17-06-2004 14:51 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Osiris schreef op 17 juni 2004 @ 14:50:
Kun je PHP niet het wachtwoord van de FTP laten gebruiken om een .htpasswd en .htaccess te maken?
Kijk! Dat is nog eens een goede tip! Daar ga ik eens naar kijken... Bedankt!

Acties:
  • 0 Henk 'm!

  • reddevil001
  • Registratie: Januari 2002
  • Laatst online: 18-09 21:03
Verwijderd schreef op 17 juni 2004 @ 14:22:
Probleem is alleen, dat er ongeveer 10 HTML (!) pagina's per user gegenereerd worden die allemaal naar elkaar linken, dus deze oplossing gaat niet echt werken.
Wat ik zeg maar wil, is dat PHP zorgt voor authenticatie en apache die PHP gelooft dat het in orde is d.m.v. een .htaccess file.
Dan moet je dus uitlezen welke html-pagina aangeroepen wordt. Ik heb iets dergelijks draaien en dat werkt prima.

.htaccess
code:
1
2
3
<Files statistiek>
ForceType application/x-httpd-php
</Files>

In het bestand "statistiek" zet je dan de php-code.

Effectief wordt
statistiek/index.html -> echo file_get_contents($_SERVER["DOCUMENT_ROOT"] ."/../stats/". $_SERVER["REMOTE_USER"] ."/index.html");
statistiek/januari.html -> echo file_get_contents($_SERVER["DOCUMENT_ROOT"] ."/../stats/". $_SERVER["REMOTE_USER"] ."/januari.html");

[ Voor 9% gewijzigd door reddevil001 op 17-06-2004 14:59 ]

None

Pagina: 1