Mанипулиране на сесия

sorRy

Registered
Възможно ли е да се манипулира сесията и ако е възможно имали начин да се защитя от манипулирането.
 
Еми ако под манипулиране на сесия имаш предвид някой да открадне сесията на друг, да възможно е. Нарича се session hijacking. Не знам много подробности относно защитата, но съм чел, че е хубаво да се използва session_regenerate_id() често :?:
 
под манипулиране имам предвид примерно в сесията му се съдържа nick, leval, id и от там му вада данни в профила за редакция и ако някой промени id в сесията ще редактира чужди профила :cry: a за кражба няма кво толкова ценно в сесията то всеки му знае id и nick
 
Не говорех за това. Става въпрос за айди на сесията, а не на потребителя от с-мата ти за регистрация.
Единственият начин, за който знам е да ти оркраднат бисквитката, където се съдържа айдито на сесията, която си стартирал в момента, и този, който я е откраднал, влиза ствоя акаунт. Затова се използва session_regenerate_id() често, за да може докато ти крадат айдито на сесията и тнт, айдито да се смени!
 
ти не ме разбра мен ми е ясно че може да се отрадне то какво не може в днешно време питам може ли да се промени сесията примерно зададено е
$_SESSION['id'] = 15;
и това е неговото ид и той да го промени на
$_SESSION['id'] = 1; да кажем и така ако направи това ще може да промени паролата например на админа и да влезе с неговия акаунт
 
Ами за да си сигурен направи сесия за парола и сравнявай паролата със сесията :}
 
Сесийните файлове, в които се намират стойностите от сесийния масив се съхраняват на сървъра в нарочна директория (обикновено намираща се в ТМП-директорията). За всеки потребител се създава отделен файл и се изтрива на определено време като цялото управление на процеса е автоматизирано.

Не се сещам как могат да манипулират стойностите в сесийния масив без по някакъв начин да манипулират скриптовете ти или да включат външен код в твоя.

session_regenerate_id(); ще промени сесийния идентификатор - това е низовата стойност в сесийното куки, което се записва на потребителската машина.

При всяка заявка към сървъра браузъра изпраща и стойността на сесийното куки и по нея сървъра разбира кой точно файл (съдържащ данните за съответната сесия) е създаден за дадения потребител.

Честото използване на session_regenerate_id(); не е препоръчително, но при определени обстоятелства (когато правиш някакви важни промени в сесийния масив за дадения потребител) не само можеш, но е и желателно да рестартираш сесията, за да се подсигуриш срещу възможни грешки.

Животът на сесийното куки обикновено е 0 - т.е. докато браузъра е отворен на дадения адрес.

Виж в наръчника на РНР за повече информация - раздел сесии е преведен на български от доста време:

http://bg2.php.net/manual/bg/book.session.php
 
@sizif, може ли да обясниш какви проблеми могат да се появят при използването на sesion_regenerate_id, защото единственото нещо, за което се сещам е да изтрие старата сесия, но това няма да се случи ако не се зададе стойност на първия параметър true (по дефаулт е false).
:)
 
Suhosin patch-a "прозрачно" се справя доста добре с пазенето от крадене на сесии :) В нета е описано какво точно прави. Доста полезен пач е, а и само разширението също върви. Даже повечето екстри вече са в разширението а не самия пач :)
 
F1r3Fl3x,

sesion_regenerate_id(); рестартриа сесията в буквалния смисъл: ново куки, презапис на информацията от сесийния файл, ново време за изчистване на данните (изтриване на сесийния файл или данни от него) и т.н.

Проблеми:
разминаване м/у идентификатора в съхраненото куки и данните на сървъра
риск от загуба на данни при презаписа на файла

Хвърли един поглед на конфигурационните директиви и по-специално забележките по повод "събирането на боклука":
http://bg2.php.net/manual/bg/session.configuration.php

При по-натоварен сървър и често рестартиране на сесията грешките валят. От друга страна рестартирането на сесията би трябвало да опресни данните в сесийния файл - старите данни с изтекла валидност да се изчистят.

Честото прибягване до сесийни операции (а напоследък чета и използването на множество сесийни променливи) затормозявало работата на сървъра, макар да не се сещам за по-лесен начин за предаване на данни.
 
sizif каза:
F1r3Fl3x,

sesion_regenerate_id(); рестартриа сесията в буквалния смисъл: ново куки, презапис на информацията от сесийния файл, ново време за изчистване на данните (изтриване на сесийния файл или данни от него) и т.н.
По подразбиране не презаписва стария файл, а прави нов такъв.
sizif каза:
Проблеми:
разминаване м/у идентификатора в съхраненото куки и данните на сървъра
риск от загуба на данни при презаписа на файла

Хвърли един поглед на конфигурационните директиви и по-специално забележките по повод "събирането на боклука":
http://bg2.php.net/manual/bg/session.configuration.php

При по-натоварен сървър и често рестартиране на сесията грешките валят. От друга страна рестартирането на сесията би трябвало да опресни данните в сесийния файл - старите данни с изтекла валидност да се изчистят.

Честото прибягване до сесийни операции (а напоследък чета и използването на множество сесийни променливи) затормозявало работата на сървъра, макар да не се сещам за по-лесен начин за предаване на данни.

Многото сесии наистина тормозят сървъра, но това е при големи натоварвания.
Ако говорим за общия случай - сайтче на споделен хостинг - то това че няколко сайта не хабят ресурси, не помога особено за цялостното натоварване на сървъра. Разбира се това не означава, че трябва да се хабят ресурсите. Трябва да се търси златната среда. Както е казал някой по-горе - сесиите са удобни и не виждам причина да не се ползват.

пп
бутоните напред/назад на браузъра не работят при използването на session_regenerate_id()
 

Back
Горе