webpagina laden op basis van cookie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 22:27
Voor een website die ik maak voor een kennis heb ik een administratie-gedeelte waar alle inhoud kan beheerd worden (interactie met een database). Echter, uit veiligheid moet bij het laden van de administratie-webpagina eerst gekeken worden of een cookie 'gebruikersnaam' bestaat en vervolgens of de waarde van deze cookie overeenkomt met naam van de administrator. Zoniet wordt een andere webpagina geladen (inlogpagina).

Mijn probleem is nu echter dat dit script blijkbaar overgeslaan wordt en de administratie-pagina altijd geladen wordt (zelfs als de cookie helemaal niet geset is). Nog merkwaardiger is dat het script wel blijkt te werken op een andere test-webserver.

Het deelscript waar het allemaal om draait is:
code:
1
2
3
4
5
6
7
    if(!isset($_SESSION['gebruikersnaam'])){
                header('Location: index2.php');          
            } else{
                if($_SESSION['gebruikersnaam'] != "Dipierrot"){
                    header('Location: index2.php');
                }
            }


Mijn vraag nu is of iemand me hiermee kan helpen dit probleem op te lossen of me te zeggen hoe ik dit probleem kan debuggen.

Alvast bedankt voor enige hulp...

Systeem - I'm learning, I learn it from a book :)


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Je controleert nu de session, niet de cookie...

Overigens, wat staat er in de session? print_r($_SESSION) ?

Acties:
  • 0 Henk 'm!

  • Palomar
  • Registratie: Februari 2000
  • Niet online
Session is iets anders dan een cookie hoor, dus dat gaat sowieso al fout. Verder vind ik je if else wat vreemd. Zo te zien wordt index2.php idd altijd geladen (tenzij ik mij vergis). Je kunt beter iets doen als:

if (isset(session[gebruikersnaam]) and session[gebruikersnaam] == 'password') {
header(index2.php).
}

(wel even in geldige php ;)).

[ Voor 3% gewijzigd door Palomar op 08-02-2010 00:05 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Ik gok zomaar even dat je session_start in het begin hebt gedaan... En hij controleert geen cookie ( en dat is een goede zaak ) maar enkel een sessie op de server. Misschien dat je session-tmp map niet goed staat?

Maar nog een paar rare opmerkingen :
- header locations zijn onbetrouwbaar zonder die() eronder te zetten, elke browser ( of telnetter ) die zich niet 100% aan specs houdt krijgt gewoon nog de inhoud te zien van deze pagina.
- Je wilt niets relevants in cookies zetten, elke inhoud van een cookie moet server-side gecontroleerd worden of het wel nog hetzelfde ip-adres / browser is. Cookies zijn gewoon te copieren anders

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:33

MueR

Admin Tweakers Discord

is niet lief

Move naar Programming

Verder met een aantal anderen hierboven:
- Staat je sessie map goed ingesteld?
- Start je de session wel?
- Wat krijg je te zien wanneer je, ipv een header, die('No access') doet?
- Probeer een betere methode te kiezen, de huidige aanpak is niet echt veilig.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 22:27
OK, blijkbaar heb ik het probleem kunnen oplossen.
Ik zag ergens nog staan dat er normaal niets vóór een header-regel mag komen te staan. Ik heb nu het volledige php-script helemaal bovenaan het php-bestand geplaatst en nu werkt het aldus wel.

OK, jullie opmerkingen omtrent cookies versus sessies is inderdaad waar. Ik bedoelde dus 'sessies' die ik hier gebruik (mits alles met gevoelige informatie steeds serverside moet zijn natuurlijk).
Echter nog de vraag: is hier werken met een 'header' voor de beveiliging van het administratie-gedeelte nu echt gevaarlijk? Of wordt er enkel bedoeld dat het op een betere manier kan?

Systeem - I'm learning, I learn it from a book :)


Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

RainerSGF schreef op maandag 08 februari 2010 @ 00:59:
Echter nog de vraag: is hier werken met een 'header' voor de beveiliging van het administratie-gedeelte nu echt gevaarlijk? Of wordt er enkel bedoeld dat het op een betere manier kan?
Ja.

Vraag de pagina maar eens op met curl. Je krijgt dan gewoon de volledige inhoud van je pagina, inclusief alles wat door php uitgevoerd wordt. header() doet precies dat: het voegt een header toe aan de pagina. Of dat een aparte Content-Type is of een Location is niet iets dat uitmaakt. die() fixt dat probleem doordat daarmee de uitvoer van code gestopt wordt.

[ Voor 31% gewijzigd door CyBeR op 08-02-2010 01:07 ]

All my posts are provided as-is. They come with NO WARRANTY at all.


Acties:
  • 0 Henk 'm!

  • RainerSGF
  • Registratie: Juli 2008
  • Laatst online: 22:27
als ik het goed begrijpt zou ik dus beter die 'header(Location: index2.php)' vervangen door 'die("geen toegang")'? Kun je anders eens een voorbeeld geven van hoe jij het bedoelt Cyber?

Systeem - I'm learning, I learn it from a book :)


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Nee, die die() moet je gewoon op de volgende uit te voeren regel zetten.

Zoiets dus
PHP:
1
2
3
4
if (1!=001) {
   header(Location: http://vlegel.nl/index2.php);
   die("Scheer je weg vlegel");
}

Enige opmerking die ik nog heb is dat volgens specs afaik je header naar een absolute URI moet verwijzen en niet naar een relatieve

[ Voor 27% gewijzigd door Gomez12 op 08-02-2010 22:18 ]


Acties:
  • 0 Henk 'm!

  • Mephix
  • Registratie: Augustus 2001
  • Laatst online: 15-03 08:21
Echter, uit veiligheid moet bij het laden van de administratie-webpagina eerst gekeken worden of een cookie 'gebruikersnaam' bestaat en vervolgens of de waarde van deze cookie overeenkomt met naam van de administrator.
Je beseft dat hier weinig veilig aan is?

Al denk ik dat je cookies en sessions door elkaar haalt, gezien je stukje code.

edit: crap.. anders lees ik eerst ff alle replies

[ Voor 6% gewijzigd door Mephix op 09-02-2010 18:42 ]

Pagina: 1