Въпрос относно $_SESSION

Radko

Registered
Искам да попитам безопасно ли е да запазвам важни данни във $_SESSION променлива? Като например в таблицата users имам поле rang (Администратор или нормален потребител), и там където е нужна проверка на достъпа, вместо да се конектвам към ДБто и да проверявам ранга на текущия потребител направо да извикам $_SESSION['rang'], която съм записал по - рано? Или пък да запазвам информацията в кукита?

И въобще така може ли да се манипулира достъпа по някакъв начин?

Сигурно въпроса ми е глупав, но още се уча :)
 
Хубаво е да се записва само сесия (session_id) в $_SESSION.Попринцип не е хубаво да се ползва и $_SESSION за регистрациите, по-добре само $_COOKIE за сесия и тя да си дърпа информацията. :)
 
При логин на потребитела нали се създава сесия направи за

$_SESSION['is_logged']['username']=името с което се е логнал.

$imeto=$_SESSION['is_logged']['username'];

И после за различните неща където ти потрябва админски права го задаваш по този начин:

PHP:
$row=mysql_query("SELECT user,username_perm FROM table WHERE username_perm=1 AND user='$imeto' ");

if(mysql_num_rows($row)>0) {

echo 'ADMIN OPTIONS';

}

else {

echo 'NORMAL USER OPTION';

}



Трябва ти и едно поле username_perm в базата данни.

username_perm int(80) as_defined(0) като стойности.



http://phpsec.org/projects/guide/4.html


Тук в този линк пише за session_hjacking може да го разгледаш.

Гледм защитатават с md5.

ПРЕДПОЛАГАМ ЗАЩИТАТА ЩЕ СТАНЕ ТАКА:


PHP:
//Задаваш на името на сесията да е md5 и тя.

//Задваш и $_SESSIOM['is_logged']['username'] да е md5.


$ime="Името с което се е логнал";

$_SESSION['is_logged']['username']=md5($ime);

$imeto=$_SESSION['is_logged']['username'];

И после за различните неща където ти потрябва админски права го задаваш по този начин:

PHP code:
$row=mysql_query("SELECT user,username_perm FROM table WHERE username_perm=1 AND md5(user)='$imeto' ");

if(mysql_num_rows($row)>0) {

echo 'ADMIN OPTIONS';

}

else {

echo 'NORMAL USER OPTION';

}
 

Back
Горе