2010-08-09 4 views
10

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

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

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

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

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

Второе решение - путь дольше.

Благодарим за помощь!

+8

Почему вы не хотите знать, как ? Знать, как это делается, важно для того, чтобы люди не могли этого сделать. Не похоже, что у нас есть Полиция Мыслей, которая штрафует вас за то, что вы знаете, как использовать вещи. –

+12

@Matti Он, вероятно, пытался вытеснить все «мы не помогаем хакерам здесь» downvotes, которые появляются всякий раз, когда кто-нибудь задает этот вопрос –

+1

@ Майкл Мрозек. И я отвечаю, чтобы убрать голосовые вопросы, и я получаю голоса по моему ответу. – rook

ответ

11

Нет, если:

  • Злоумышленник не имел доступа к хранению переменных сеанса (обычно в файловой системе сервера, но также может быть, например, базы данных)
  • Атакующий intercepted a session cookie из более привилегированный пользователь.
  • Атакующий успешно зафиксировал сеанс более привилегированного пользователя (см. Атаки session fixation).
+0

благодаря отличным ссылкам – Ormoz

3

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

+0

Я не использую cookie, что так всегда. Спасибо за быстрый ответ! –

+7

@Lobsterm Вы явно передаете идентификатор сеанса в строке запроса? В противном случае вы используете файлы cookie, понимаете ли вы это или нет. – meagar

2

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

2

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

2

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

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

3

Чем выше риск исходит от злоумышленника угон активной сессии, вы можете найти информацию об этом здесь:

Смежные вопросы