sessies onveilig, en nu?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Phpnuke r

phpnuke r

31/01/2011 20:51:55
Quote Anchor link
Hallo allemaal, op m'n oude forum(ja zit ik gewoon nog op) heb ik mijn script getoont om te tonen hoe mijn site is beveiligd. Zei hebben mij wikipedia getoont (session hijacking) en nu zit ik met het probleem:

Sessies onveilig, cookies ook, WAT NU? De huidige script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
if (isset($_SESSION['login']))
{

    $logintrue = $_SESSION['login'];
    if($logintrue=='true')
    {

        $content['user']['id'] = $_SESSION['id'];
        $content['user']['name'] = $_SESSION['username'];
        $content['user']['pass'] = $_SESSION['password'];
        $check = mysql_query("SELECT * FROM ".$table_pref."members WHERE username='".$content['user']['name']."' AND password='".$content['user']['pass']."' AND id='".$content['user']['id']."'");
        $check2 = mysql_num_rows($check);
        if($check2=='1')
        {

            $logintrue2 = 'true';
        }

        while($row = mysql_fetch_array($check))
        {

            $content['user']['position'] = $row['position'];
            $content['user']['mail'] = $row['mail'];
            $content['user']['regon'] = $row['regon'];
        }
    }
}

else
{
    $logintrue2 = 'false';
}

?>
Gewijzigd op 31/01/2011 20:52:55 door Phpnuke r
 
PHP hulp

PHP hulp

22/12/2024 08:18:28
 
Vincent Huisman

Vincent Huisman

31/01/2011 20:55:04
Quote Anchor link
nooit wachtwoorden opslaan in sessies
 
Phpnuke r

phpnuke r

31/01/2011 20:57:36
Quote Anchor link
Dat is mij inderdaad verteld, maar hoe vergelijk je dan? Dan word de wachtwoord niet meegenomen en dan heb je het dus zo dat je alleen username meeneemt en dan maak je het pas makkelijk om te hacken.
 
Pim -

Pim -

31/01/2011 21:01:37
Quote Anchor link
Hoezo zijn sessies onveilig?

Ze kunnen hooguit gestolen worden, maar dat is een probleem waar niet echt veel aan te doen is. Je kan hooguit een fingerprint van de requests maken door de user-agent en het ip te hashen. Wanneer het ip adres dan verandert tijdens de sessie (wat soms voor kan komen) zijn je sessies ongeldig.

Beter kan je gewoon heel goed oppassen voor XSS aanvallen.
 
Phpnuke r

phpnuke r

31/01/2011 21:03:49
Quote Anchor link
Hallo Pim, zo dacht ik er ook over maar dit is een project, en daarin wil ik het op het best hebben. Aangezien ik nu hoor dat sessies gestolen kunnen worden wil ik deze beveiliging zo goed als kan maar ik weet niet hoe dit beter kan. Jij zegt inloggen op zowel de ip adress als de gegevens?
Gewijzigd op 31/01/2011 21:04:27 door phpnuke r
 

31/01/2011 21:13:33
Quote Anchor link
Vincent heeft wel een punt, waarom zou je de gebruikersnaam en het wachtwoord opslaan in een sessie of cookie? Je hoeft ze toch niet meer verder te gebruiken als de gebruiker ingelogd is. Alleen de id van de gebruiker heb je nog nodig.
 
Aad B

Aad B

31/01/2011 21:44:46
Quote Anchor link
Precies zoals Pim stelt: Je kan hooguit een fingerprint van de requests maken door de user-agent en het ip te hashen en zoals Vincent zegt: nooit wachtwoorden opslaan in sessies. Hiermee bereik je een redelijk optimale beveiliging. Interpreteer het iig niet als ip-adres opslaan want dat is een enorm veelgemaakte fout!
 
Pim -

Pim -

31/01/2011 23:44:34
Quote Anchor link
@Merijn
Sessies zijn een noodzakelijk kwaad. HTTP stelt ons niet in staat de ene aanvraag de herkennen als een andere aanvraag opvolgend. Dit is echter noodzakelijk voor functies als inloggen en autorisatie. Om hieromheen te werken bestaan er sessies. Dit is informatie op de server. Om te zorgen dat de server weet welke informatie bij wie hoort is er een 'session identifier', meestal een cookie. Gebruik van cookies is uiteraard gevaarlijk, maar veel is er niet aan te doen.
 
Phpnuke r

phpnuke r

01/02/2011 09:04:15
Quote Anchor link
Jullie zeggen dat ik het wachtwoord NIET moet opslaan in een sessies, eerst dacht ik erover om dit wel te doen omdat sessies veilig waren. Maar nu: Als je het wachtwoord niet opslaat word er toch niet vergeleken?

Net als smf gebruik ik de ids al, voor bijvoorbeeld:
site.nl/index.php?action=profile&i=1

Maar hoe doen zij dat dan?

Het wachtwoord staat in de sessie ook al gehasht (md5) dus gedeeltelijk had ik er al aan gedacht ALS de sessies zouden gekraakt worden.
 

01/02/2011 09:11:50
Quote Anchor link
Waarvoor heb je het wachtwoord nodig?
Als er ingelogd is, dan is er toch ingelogd en is het wachtwoord niet meer nodig...
Verder niet alleen hashen, ook salt gebruiken.
 
John D

John D

01/02/2011 09:15:58
Quote Anchor link
Merijn geurts op 01/02/2011 09:04:15:
Het wachtwoord staat in de sessie ook al gehasht (md5) dus gedeeltelijk had ik er al aan gedacht ALS de sessies zouden gekraakt worden.
En het staat in je database ook gehashed dus wanneer een sessie gestolen wordt is men meteen binnen. Daarom geen wachtwoorden in de sessie opslaan!! Doe wat Pim aanbeveelt.
 
TJVB tvb

TJVB tvb

01/02/2011 09:34:46
Quote Anchor link
Het opslaan van wachtwoorden in sessies kan gebruikt worden om je automatisch uit te loggen als je wachtwoord gewijzigd is.

Verder is het belangrijk om bij te houden vanaf welke locatie de sessie komt (ip adres)
Verder browser gegevens etc om te nog meer te beschermen tegen spofen. 100% veilig kan niet (en bestaat niet)

In je cookie sla je eigenlijk niks op, dit is in te lezen door iedereen.
 

01/02/2011 09:40:24
Quote Anchor link
TJVB tvb op 01/02/2011 09:34:46:
Het opslaan van wachtwoorden in sessies kan gebruikt worden om je automatisch uit te loggen als je wachtwoord gewijzigd is.

(...)


Dat zou ik anders doen.
Gewijzigd op 01/02/2011 09:40:35 door
 
Phpnuke r

phpnuke r

01/02/2011 10:39:39
Quote Anchor link
maar als ik het wachtwoord neit gebruik in de sessies kunnen ze toch alsnog de sessies overnemen? Ze nemen ten slotte alle sessies over lijkt me? Dan lijkt me het systeem die ook nog eens kijkt naar het ip adress het beste... Wat vinden jullie hiervan:

>bij inloggen word dat gedaan zoals het script in mijn eerste post, alleen nu ook word je ip meegenomen ($_SERVER['REMOTE_ADDR'];). Ditmaal niet in sessies maar in de database. Daar staat het ip adress met welk account het is ingelogd, en die word alleen toegevoegd of verwijderd bij het uitloggen en inloggen.

>Bij controlleren of je ingelogd bent word dus gekeken of de combinatie username<>password bij ingelogde gebruikers staat EN met het juiste ip adress. Mocht de sessie verlopen zijn kan je overnieuw inloggen en word er gekeken of de huidige ip adress al ergens op was ingelogd. Zoja, word deze verwijderd.

Is dat wat? Persoonlijk zie ik het als een mooie verdediging ;)
 
Ozzie PHP

Ozzie PHP

01/02/2011 10:47:56
Quote Anchor link
Aad B op 31/01/2011 21:44:46:
Precies zoals Pim stelt: Je kan hooguit een fingerprint van de requests maken door de user-agent en het ip te hashen en zoals Vincent zegt: nooit wachtwoorden opslaan in sessies. Hiermee bereik je een redelijk optimale beveiliging. Interpreteer het iig niet als ip-adres opslaan want dat is een enorm veelgemaakte fout!
Wat bedoelt Aad hiermee?
Gewijzigd op 01/02/2011 10:48:14 door Ozzie PHP
 
Phpnuke r

phpnuke r

01/02/2011 11:37:04
Quote Anchor link
Maar waarom dan niet, ik weet dat er met proxy's valt doorheen te komen maar dan moet diegene toch eerst het ip adress weten?
 
John D

John D

01/02/2011 13:26:17
Quote Anchor link
en dubbele ip adressen? Ik zit met mijn collega's (ongeveer 2000 man/vrouw) op hetzelfde ip adres.
Gewijzigd op 01/02/2011 13:26:42 door John D
 
Phpnuke r

phpnuke r

01/02/2011 13:34:59
Quote Anchor link
Dan als je inlogd op je account log je uit op de andere computer. Mag geen probleem hebben volgensmij...

Dan maakt ieder een eigen account aan, kan ook hoor :)
Gewijzigd op 01/02/2011 13:37:31 door phpnuke r
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.