Безопасность хранения переменных в сессии.

Discussion in 'PHP' started by Дикс, 23 Apr 2006.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Хотелось бы узнать - возможно ли каким-то образом модифицировать переменные в сессии?
    Т.е. у меня все опции админа доступны если $HTTP_SESSION_VARS['userstatus'] == 3.
    Может ли хацкер присвоить себе такой статус и получить статус админа?
     
  2. pch

    pch Elder - Старейшина

    Joined:
    22 Oct 2005
    Messages:
    34
    Likes Received:
    41
    Reputations:
    15
    В куках хранится только идентификатор сессии, а переменные и их значения живут на сервере (обычно, в папке tmp). Если хакер получит идентификатор сессии, то он автоматически станет админом. Но чтобы её получить, ему придётся найти CSS-уязвимость в вашем сайте и спереть ваши куки.
     
    #2 pch, 23 Apr 2006
    Last edited: 23 Apr 2006
  3. 1ten0.0net1

    1ten0.0net1 Time out

    Joined:
    28 Nov 2005
    Messages:
    473
    Likes Received:
    330
    Reputations:
    389
    Дай сциллу на свой сайт и часть скрипта, отвечающую за авторизацию в админке - и тогда я тебе попытаюсь ответить точно.
     
  4. Achtung!

    Achtung! Banned

    Joined:
    20 Mar 2006
    Messages:
    11
    Likes Received:
    4
    Reputations:
    -1
    2Дикс да
     
  5. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    как допишу, обязательно попрошу форумчан мой движок потестить и сорцы дам :)
    а пока ладно, успокоили :)
     
  6. Trinux

    Trinux Members of Antichat

    Joined:
    26 Nov 2004
    Messages:
    1,403
    Likes Received:
    296
    Reputations:
    364
    Ну... чтобы расставить все точки над i... Хотя и так все уже ясно...

    Сессии, о которых ты говоришь - надстройка только php языка. Устроены они просто. Тебе в куку или адрес кидатся идентификатор сессии и на диск пишется сессия. Либо, как было сказано, в диру /tmp обычно либо в БД. Далее php интерпритатор, при нахождении идентификатора сессии у тебя в куках либо в POST\GET запросе проверяет наличие сессии с таким же именем на диске. Если находит - то только тогда подключает файл сессий и создается переменные окружения. Т.е. они создаются уже после того, как php начал обрабатывать скрипты. Т.е. если ты, грубо говоря, обратишься по адресу
    localhost/?HTTP_SESSION_VARS['userstatus']=3
    Ты не присвоешь этой переменной значение 3. Так как она в скриптах будет объявлена позже.
     
    _________________________