[ BLACK_SWORD @ 17.06.2011. 20:16 ] @
Pozdrav!

Kad mi se korisnik uloguje na sajt u session se sprema njegov id iz mysql baze i po tim id provjeravam dali je korisnik logovan itd primjer
Code:

<?php

$sajt['domena'] = 'http://localhost/sajt/';

// Funkcija provjerava status od korisnika.
function provjerava_status_korisnika()
{
    global $sajt;

    if(isset($_SESSION['id_korisnika']))
    {
        $s = "SELECT status FROM korisnici WHERE id_korisnika = $_SESSION[id_korisnika] ";
        $u = mysql_query($s) 
            or die('Nije izvršena provjera u bazi!' 
                . mysql_greske($sajt['domena'] . 'funkcije/funkcije_korisnici.php', 
                    $s, mysql_error(), mysql_errno())); // Upisuje brešku u bazu ako se dogodi.

        if(mysql_num_rows($u) > 0)
        {
            $p = mysql_fetch_array($u);
            return $p['status'];
        }
    }
}

// Primjer.
if(provjerava_status_korisnika() == 1)
{
    echo 'Korisnik je admin!';
}

?>


// Primjer 2

if(isset($_SESSION['id_korisnika']))
{
     echo 'korisnik logovan!';
} else
{
     echo 'korisnik nije logovan!';
}


e sad mene zanima npr. kad mi se neki "haker" registruje na sajt i uloguje njegov je id npr 20, amoj 1 dali on može da promjeni kako id u session/u na 1 pa da ima pristup mom računu?

Nadam se da ste razumjeli moje pitanje.

Hvala na odgovoru!
[ dakipro @ 17.06.2011. 20:36 ] @
Sesija se cuva na serveru, tako da ne moze da sam izmeni ID, osim ako ne uspe da pristupi serveru, ali onda sigurno nece da menja ID u sesiji ako je vec na serveru.
[ vilyu @ 18.06.2011. 20:49 ] @
Može da promeni ID sesije u session cookie-u koji stoji kod njega u browseru. To se zove Session hijacking.
[ BLACK_SWORD @ 20.06.2011. 22:52 ] @
a možel da promjeni id koji spremam u session, kad se korisnik loguje u session spremam id iz mysql baze od korisnika i korisnicko ime.
[ BLACK_SWORD @ 23.06.2011. 22:47 ] @
Dali je ovo dobro da zastitim sajt od kradje sesije?

Odmah ispod pokretanja sesije da stavim ovaj kod
Code:

session_start(); // Pokreće session.

if(isset($_SESSION['HTTP_USER_AGENT']))
{
    if($_SESSION['HTTP_USER_AGENT'] != md5($_SERVER['HTTP_USER_AGENT']))
    {
        unset($_SESSION['korisnicko_ime']);
        unset($_SESSION['id_korisnika']);

        header('Location: prijava.php');
        exit;
    }
} else
{
    $_SESSION['HTTP_USER_AGENT'] = md5($_SERVER['HTTP_USER_AGENT']);
}
[ VladaSu @ 24.06.2011. 10:26 ] @
Korisnik nista ne moze da menja u sesiji za razliku od kukija.
Id sesije se prenosi preko url-a ili se cuva u kukiju.
Ako ja dobijem id sesije 1 a ti imas id sesije 2 i ja u kukiju promenim da je id sesije 2 umesto 1 ti ces misliti da sam ja ti i davaces mi tvoje podatke....
[ BLACK_SWORD @ 24.06.2011. 12:54 ] @
a dali je siguran taj kod gore što sam napisao?
[ VladaSu @ 24.06.2011. 13:42 ] @
Sigurniji samo ako korisim drugi browser ali ja taj header mogu opet rucno da prepravim i da ti posaljem.
Recimo mogu da ti posaljem da korisim IE iako koristim Chorme i tako isprobam listu najkoristenijih browsera i nesto ce da prodje.
A vec kako sam ukraio session id tako mogu i da saznam koji je browser upitanju.
Ne mogu reci da nije sigurnije, po meni je recimo 5% sigurnije jer cim neko skonta da imas i tu proveru on ce ti poslati identican header.
[ BLACK_SWORD @ 24.06.2011. 20:37 ] @
pa kako onda da zastitim se od kradje sesije, da nemože niko ukrasti neciji session?
[ VladaSu @ 27.06.2011. 11:55 ] @
Koristi SSL. Nema 100% zastite. Treba se pomiriti sa tim. IP adresa je jedno od resenja ali neki provajderi u Americi razlicite delove stranica (slike, css, js, htmlm flash..) ucitavaja preko razlicitih proxy servera gde moze da se izgubi IP korisnika i onda ti i dalje ne vazi ni IP provera.