Вы можете использовать HTTPS, как сказал Рейл, но если вы не можете позволить себе сертификат, есть несколько способов защитить сеанс даже с HTTP:
- Сохранение пользовательского агента в сеансе при создании сеанса. Проверяйте user-agent на каждый запрос. Если пользовательский агент изменяется, удалите сеанс.
- То же, что и выше, но с IP-адресом. Раздражает то, что многие интернет-провайдеры предоставляют динамические IP-адреса, и сеанс может быть удален незаконно.
- Установить малое время ожидания сеанса. Это не помешает перехвату сессии, но снижает риски. Осторожно, это может раздражать пользователей.
- Установить низкое время жизни сессии (1 день). Это заставит пользователей выполнять повторную аутентификацию через 1 день, поэтому, даже если сеанс будет захвачен, он не будет захвачен более одного дня.
Помните, что эти советы не помешают перехвату сессии. Они значительно снизят риски, но всегда будут, если вы не используете HTTPS.