[apache] Beveiligen directories

Pagina: 1
Acties:

  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Topicstarter
Stel, ik heb een backend geschreven in php. Zodra ik een file aanroep uit de backend (foo.php), dan zal deze eerst kijken of ik ingelogd ben via een sessie, en zo niet doorsturen naar login.php.

Hier is allemaal niets aan de hand, maar dan het volgende:

Ik wil de achterliggende directories transparant beveiligen. Zodra ik een url aanroep zoals: http://www.example.org/backend/directory1/foo.php, dan moet er gekeken worden of ik ben ingelogd in de backend. Als dat zo is, dan laad apache foo.php, en ben ik niet ingelogd dan wordt er doorgestuurd naar login.php.

Probleem is dat dit transparant moet gebeuren, aangezien ik niet elke php-file wil aanpassen, en er ook .pl , .html en images zijn die beveiligd moet worden.

Wat ideetjes die ik heb uitgeprobeerd:

* .htaccess is niet mogelijk: ik authenticeer via de backend, niet via apache.

* Url-rewrite en/of multiviews. Dit gaat goed zodra je een file wilt aanroepen en deze door te sturen naar een check-file:


code:
1
RewriteRule     /admin/(.*)/(.*)        /admin/checkxs.php?url=$1/$2 [L]



Zodra ik dus een file in een subdir van /admin aanroep, dan wordt checkxs.php met de url aangeroepen.

Nu heb ik dus het probleem: zodra checkxs vind dat ik door mag gaan (en dus niet redirect naar login.php), hoe stuur ik em door naar de feitelijke url. Zodra ik dat doe, creeer een oneindige loop :'(

Misschien heel makkelijke oplossing, maar ik zie em eventjes niet :)

Yo dawg, I heard you like posts so I posted below your post so you can post again.


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Is het meest eenvoudige niet om dit in PHP op te lossen? In plaats van dat je de user door wil sturen naar de echte pagina kun je ook gewoon een fpassthru of een Apache subrequest doen :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • active2
  • Registratie: Juni 2001
  • Laatst online: 17-07 21:56

active2

Google is your friend

Je kan apache natuurlijk ook vragen om tegen die backend te authenticeren. Ik weet niet tegen welke backend je dat gedaan hebt... maar het zou eventueel kunnen.

Verder is het idd de makkelijkste manier om een php file aan te maken. En vervolgens includen voor elke php pagina die je hebt staan. (Levert veel werk op)

Wat betreft het laatste... ik denk dat je dan idd een oneindige loop hebt.. omdat apache niet kan weten of jij wel ingelogged bent.

Succes

Google, Het mirakel van de 21e eeuw!!!!


  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Topicstarter
Op zich zou het wel moeten kunnen met virtual().

Het enigste waar ik dan mee zit is dat apache moeten weten wanneer een file wordt aangeroepen via een 'normale' request (dus doorgestuurd worden naar authenticate.php) of de file daadwerkelijk mag aanroepen.

Ik heb al zitten kijken naar rewritecond opties zoals IS_SUBREQ, REQUEST_FILENAME etc maar kan niet echt iets vinden.

code:
1
2
       RewriteCond     %{REQUEST_URI} !^/admin/checkxs.php$
       RewriteRule     /admin/(.*) /admin/checkxs.php?url=$1 [L]

Yo dawg, I heard you like posts so I posted below your post so you can post again.


  • blaataaps
  • Registratie: Juli 2001
  • Niet online
SA lijkt me een mooie plaats hiervoor, volgende keer volstaat 1 enkel topic wel.