Можно ли «пиратствовать» переменную сеанса (не хочу знать, как) - PullRequest
10 голосов
/ 09 августа 2010

В настоящее время я работаю над сайтом на php, мы используем переменную Session для хранения уровня разрешений каждого пользователя.

Например, если кто-то из вас зайдет на сайт, вы автоматическиполучить переменную сеанса со значением «member».

То, что я спрашиваю: возможно ли злоумышленнику зайти на сайт и изменить значение переменной сеанса для «admin» вместо «member "

Я не спрашиваю, как, просто если это возможно, и если да, то какой особый доступ потребуется злоумышленнику (например: доступ к коду, ....)

У меня есть альтернативное решение, которое будет состоять в том, чтобы заменить значение разрешения токеном, срок действия которого истекает со временем.

Второе решение гораздо дольше реализовать.

Спасибо за помощь!

Ответы [ 6 ]

11 голосов
/ 10 августа 2010

Нет, если только:

  • Злоумышленник имел доступ к хранилищу переменных сеанса (обычно это файловая система сервера, но также может быть, например, базой данных)
  • злоумышленник перехватил файл cookie сеанса более привилегированного пользователя.
  • Злоумышленник успешно зафиксировал сеанс более привилегированного пользователя (см. фиксация сеанса атаки).
3 голосов
/ 10 августа 2010

Более высокий риск наступает от атакующего кражи активного сеанса, об этом вы можете узнать здесь:

3 голосов
/ 09 августа 2010

Из того, что вы описали, я предполагаю, что вы не сохраняете разрешение в cookie.Таким образом, единственный способ получить доступ - это угадать / обмануть ID сеанса администратора или использовать атаку между сайтами.Если ваши идентификаторы сессии достаточно длинные, первый метод будет очень трудно реализовать.

2 голосов
/ 10 августа 2010

Если в вашем приложении нет недостатка безопасности, кто-то не сможет просто изменить и изменить переменные сеанса - они хранятся на сервере, и клиент никогда не имеет прямого доступа к ним.

Однако они могут изменить идентификатор сеанса, перейдя по URL-адресу, например http://your.site.com/?PHPSESSID=2342f24502ade525. Потенциал для злоупотребления здесь двоякий: (1) если бы они случайно узнали идентификатор сеанса вошедшего в систему пользователя, идентификатор сеанса позволил бы им выдать себя за этого пользователя, предоставив им весь доступ, который имеет пользователь; и (2) если они могут кого-то обмануть, чтобы перейти к URL-адресу, к которому прикреплен идентификатор сеанса, и этот человек входит в систему, теперь они знают идентификатор сеанса этого пользователя (потому что они его предоставили!), и мы вернемся к (1 ).

2 голосов
/ 10 августа 2010

Это зависит от того, как вы храните сеанс. Если это в URL, то да. Если это в куки, то возможно.

2 голосов
/ 10 августа 2010

Ваши переменные сеанса должны быть безопасными, поскольку сеанс хранится на сервере.Однако для того, чтобы связать конкретного клиента с определенным сеансом, обычно устанавливается cookie, который содержит идентификатор сеанса, и злоумышленник может попытаться получить доступ к сеансу другого пользователя, используя их файл cookie идентификатора сеанса (либо грубой силой, либо каким-либо другим способом).захват чужого печенья).

...