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

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

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

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

Да.

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

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

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

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

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

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

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

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