[PHP] sessions & include

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
Ik heb een aantal pagina's, affgeschermd met een loginfunctie.
Elke pagina, behalve de classes en loginpagina worden doormiddel van
session_start(); en vervolgens een class die checked of je de pagina wel mag
zien, beveiligd.

Maar ik weet nu niet hoe ik nu een pagina kan includen, zodat iemand de include.inc.php niet
zomaar kan draaien zonder ingelogd te zijn.

Als ik namelijk 2x session_start(); post, werkt dat niet omdat ik al ouput heb gestuurd naar de browser. Daarnaast krijg ik allemaal errors van classes die allemaal geredeclared worden.

Wat ik nu gedaan heb is, de instantie die ik met de class oproep unnset ik, zodat ik de naam.class.php nog een keer kan aanroepen.

Maar normaal als niet ingelogd bent, word je met een header: location.php naar de inlogpagina gestuurd. Dat krijg ik niet opgelost en vind het ook niet heel netjes, maar weet niks anders

Hoe lossen jullie dit op cq. gaan jullie om het includes en veiligheid?

Thanx.

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je kan toch een sessie variabele setten en in elke include checken of deze geset is?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
die zijn ook gezet, maar worden getest met een class.
Het gaat me ook voor een groot deel om de redirect die ik wil afdwingen met PHP, maar dat wordt dan toch JS of META denk ik....

Vroeg me gewoon af hoe anderen dat doen

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

Verwijderd

Als een php bestand niet direct opgeroepen mag worden, moet je gewoon zorgen dat het echt niet kan. Dat betekent buiten de webroot plaatsen, of afschermen met behulp van de webserver configuratie, bijvoorbeeld een paar directives in een .htaccess bestand voor Apache HTTP servers.

Je kunt heel vaak wel wat met PHP schrijven, maar in dit geval moet je dat imho gewoon niet willen.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Verwijderd schreef op zaterdag 15 januari 2005 @ 21:01:
Als een php bestand niet direct opgeroepen mag worden, moet je gewoon zorgen dat het echt niet kan. Dat betekent buiten de webroot plaatsen, of afschermen met behulp van de webserver configuratie, bijvoorbeeld een paar directives in een .htaccess bestand voor Apache HTTP servers.

Je kunt heel vaak wel wat met PHP schrijven, maar in dit geval moet je dat imho gewoon niet willen.
Dat zijn nog eens wijze woorden... Was deze optie even helemaal vergeten :?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
ok, ehm, wat houdt dat precies in: buiten te webroot plaatsen?
Ik heb niet echt veel verstand van Apache of welk effect dat dan heeft.

Ik neem aan dat alles buiten de webroot sowieso niet geparsed mag worden tenzij aangeroepen vanuit de webroot, dus via een phpinclude?
Hoe zie ik precies wat de webroot is en hoe roep ik die aan?
Kun je een voorbeel geven, blijf ondertussen wel googlen hoor :)

[ Voor 50% gewijzigd door Zoolander op 15-01-2005 21:35 ]

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Zoolander schreef op zaterdag 15 januari 2005 @ 21:19:
ok, ehm, wat houdt dat precies in: buiten te webroot plaatsen?
Ik heb niet echt veel verstand van Apache of welk effect dat dan heeft.

Ik neem aan dat alles buiten de webroot sowieso niet geparsed mag worden tenzij aangeroepen vanuit de webroot, dus via een phpinclude?
Hoe zie ik precies wat de webroot is en hoe roep ik die aan?
Kun je een voorbeel geven, blijf ondertussen wel googlen hoor :)
De webroot is dat waar je website "begint". Daar waar www.joudomain.nl in uitkomt zeg maar. Buiten die directory zet je files neer die niemand op mag vragen via de webbrowser. Vanuit PHP code kan je hier wel bij aangezien PHP code op de server wordt uitgevoerd.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • vriesdude
  • Registratie: Februari 2002
  • Laatst online: 19-09 19:14
Zoolander schreef op zaterdag 15 januari 2005 @ 21:19:
ok, ehm, wat houdt dat precies in: buiten te webroot plaatsen?
Ik heb niet echt veel verstand van Apache of welk effect dat dan heeft.

Ik neem aan dat alles buiten de webroot sowieso niet geparsed mag worden tenzij aangeroepen vanuit de webroot, dus via een phpinclude?
Hoe zie ik precies wat de webroot is en hoe roep ik die aan?
Kun je een voorbeel geven, blijf ondertussen wel googlen hoor :)
plaats alle niet toegankelijke bestanden in een nieuwe map (submapje ofzo)
maak daarin een .htaccess bestand aan (werkt overigens alleen met apache)
en plaats daarin dit:

code:
1
deny, allow


* vriesdude twijfelt wel en beetje of dit helemaal klopt, maar moet nu ech slapen O-)

[ Voor 3% gewijzigd door vriesdude op 16-01-2005 01:05 ]

/dev/null


Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
oke, dat is wel vet.
Een folder includes op je webserver, binnen je webroot evt, met een htaccess die zegt: alleen een bestand binnen de webroot mag jou aanspreken?

Dat is iets wat goed te vinden is op internet denk ik.
Dank voor het inzicht, althans, wat ik hierboven zeg is wel waar toch?

mijn naam slaat nergens op, althans niet op mij :P


Acties:
  • 0 Henk 'm!

Verwijderd

Het is net iets anders. Stel je plaatst in je directory met te includen bestanden een .htacces bestand, met daarin:
code:
1
2
Order deny, allow
Deny from all

Dan is het niet mogelijk om via HTTP die bestanden op te vragen, omdat Apache weigert ze te serveren. Iets als http://www.domein.nl/inc/config.php levert dus een keurige 404 pagina op. Het script wordt nooti aangeroepen.

Je kunt echter wel in bijvoorbeeld index.php die bereikbaar is via http://www.domein.nl/index.php bestanden uit die directory includen.

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Je kan ook gewoon in je script dat wel door de gebruiker gezien mag worden define("DIT_MAG", 1) zetten, en dan in de geinclude()'de files bovenaan iets als if (!defined("DIT_MAG")) exit(); te zetten.

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Radiant schreef op dinsdag 18 januari 2005 @ 10:49:
Je kan ook gewoon in je script dat wel door de gebruiker gezien mag worden define("DIT_MAG", 1) zetten, en dan in de geinclude()'de files bovenaan iets als if (!defined("DIT_MAG")) exit(); te zetten.
Dit is een aardige oplossing als je bijvoorbeeld een opensource pakket maakt of iets dergelijk dat je met zo weinig mogelijk instellingen en op zoveel mogelijk OS'en/Webservers werkende wil hebben.

Is het alleen voor jezelf dan kun je beter gewoon je include-dir dichtgooien (mijn voorkeur) of ze buiten de webroot zetten.

Acties:
  • 0 Henk 'm!

  • Zoolander
  • Registratie: Januari 2003
  • Laatst online: 23-11-2022

Zoolander

superslim!

Topicstarter
many thanx!
Ik vind de .htacces zelf ook het mooist.
Maar ook de define(DIT_MAG) zal goed werken.

Ik ga denk ik voor de inc folder met een .htaccess omdat dit, waarschijnlijk, op een niet dedicated server het veiligst is.

dank nogmaals.

mijn naam slaat nergens op, althans niet op mij :P

Pagina: 1