Как зашифровать идентификатор сессии в cookie?

В то время как я читал о статьях перехвата сеанса, я узнал, что будет хорошо зашифровать значение идентификатора сессии, которое хранится в cookie.

Насколько я знаю, когда я запускаю сессию путем вызова session_start(), PHP не шифрует значение идентификатора сессии в cookie.

Как я шифрую значение идентификатора сессии и затем инициализирую сессию с ним?

7
задан N 1.1 11 April 2010 в 00:22
поделиться

7 ответов

Шифрование не поможет. В любом случае cookie сеанса - это просто магическое число. Шифрование означает, что нужно захватить другое магическое число. В зависимости от того, какие сценарии угона вы имеете в виду, существуют и другие возможные способы смягчения последствий. Например, вы можете ограничить сеансы одним IP. Однако это создает некоторые проблемы, например люди переключаются между точками беспроводной связи.

19
ответ дан 6 December 2019 в 06:02
поделиться

Это всегда хорошая идея - никогда не зависеть только от одного куки или элемента для проверки вашего (вошедшего) пользователя (пользователей). Как упоминалось выше, хорошей идеей является также хранение IP и проверка по нему. Хорошим дополнением будет хранение USER_AGENT.

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

1
ответ дан 6 December 2019 в 06:02
поделиться

Идентификатор сеанса относительно трудно угадать, так что проблема не в этом.

Есть вещи, которые вы можете сделать, связанные с этим, чтобы противодействовать атакам:

  • создать новый сеанс, когда пользователь входит в
  • ограничить продолжительность сеанса

Есть еще немало других вещей. . Я всегда рекомендую изучить Rails Guide по этим вопросам - он предлагает очень доступное объяснение известных проблем и контрмер - все в равной степени применимо к PHP-коду.

0
ответ дан 6 December 2019 в 06:02
поделиться

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

5
ответ дан 6 December 2019 в 06:02
поделиться

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

3
ответ дан 6 December 2019 в 06:02
поделиться

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

Единственное, что это может предотвратить, - это уловка, при которой вы отправляете кому-то ссылку с? PHPSESSID = foo в ней, что заставляет PHP создавать этот сеанс. Вы можете предотвратить это, используя шифрование и проверку, но лучше полностью отключить передачу идентификатора сеанса в URL-адресе.

1
ответ дан 6 December 2019 в 06:02
поделиться

Сделайте этот скрипт, получите к нему доступ из веб-браузера, а затем проверьте свои файлы cookie.

<?php
  session_start();
?>

Скорее всего, вы увидите что-то подобное

Site         Cookie      Value
mysite.com   PHPSESSID   6fktilab3hldc5277r94qh2204

PHP отлично справляется с генерацией хорошего, уникального идентификатора. Нет смысла шифровать это.

1
ответ дан 6 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: