Подтвердить что ты не робот

Поддельная сессия/Cookies?

Я не совсем уверен, как работает $_SESSION в PHP. Я предполагаю, что это куки файлы в браузере, сопоставленные с уникальным ключом на сервере. Можно ли подделать это и путем входа в систему, который использует сеансы только для идентификации пользователя.

Если $_SESSION не работает, может ли кто-то потенциально подделывать файлы cookie и обходить логины?

4b9b3361

Ответ 1

Да.

Единственное, что идентифицирует пользователя, - это псевдослучайное значение, отправляемое вместе с каждым запросом. Если злоумышленник может угадать правильные значения для отправки, он может выглядеть как кто-то другой.

Существуют различные способы сделать это сложнее:

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

Ответ 2

Сессии в PHP по умолчанию хранят данные в файле на сервере (/tmp/) и сохраняют файл cookie идентификатора обычно PHPSESSID (это будет шестнадцатеричное число, например f00f8c6e83cf2b9fe5a30878de8c3741).

Если у вас есть еще один идентификатор, вы могли бы теоретически использовать свою сессию.

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

Что касается угадывания сеанса, это возможно, но крайне маловероятно. Было бы легче угадать номера кредитных карт (меньший пул символов (0-9 over 0-9a-f) и контрольная сумма для его проверки). Хотя, конечно, вам также потребуется срок действия и код безопасности.

Ответ 3

Правильно реализовано, идентификаторы сеанса очень длинные и случайные, чтобы сделать гадание невозможным (хотя, если вы смогли угадать конкретный идентификатор сеанса пользователя, тогда да, вы будете действовать как этот пользователь). Однако вы можете обнюхивать и захватывать сеансы - это то, что делает firesheep: http://en.wikipedia.org/wiki/Firesheep