Возможный дубликат:
Безопасность сеанса PHP
Я использую сеансы по всему моему приложению. Я хочу сделать их намного более безопасными. В настоящее время я использую код как $username = $_SESSION['username'];
и тому подобное.
Как сделать сеансы более безопасными?
Первое, что вам нужно будет следить, это захват сеанса . Процитировать Википедию:
В информатике захват сеанса относится к использованию действительного сеанса компьютера, иногда также называемого сеансовым ключом, для получения несанкционированного доступа к информации или услугам в компьютерной системе. В частности, он используется для обозначения кражи волшебного файла cookie, используемого для аутентификации пользователя на удаленном сервере. Это имеет особое значение для веб-разработчиков, поскольку файлы cookie HTTP, используемые для поддержки сеанса на многих веб-сайтах, могут быть легко украдены злоумышленником с использованием промежуточного компьютера или с доступом к сохраненным куки-файлам на компьютере жертвы (см. HTTP-кражи cookie ).
Основная идея заключается в том, что если посетитель вашего сайта (Алиса) имеет cookie сеанса и идентификатор сеанса (предположим, что это 12345
), то если злоумышленник (Мэллори) может узнать идентификатор сеанса Алисы через JavaScript, обнюхивание трафика , социальной инженерии или других методах, то Мэллори может перейти на ваш сайт и установить свой идентификатор сеанса до 12345
и он фактически станет Алисой.
Один из способов предотвратить это – изменить идентификатор сеанса для каждого запроса, который вы можете сделать с помощью функции session_regenerate_id
PHP . Вы вызывали session_regenerate_id
в начале каждого запроса после вызова session_start()
Имейте в виду, что это очень сложная тема. Я настоятельно рекомендовал прочитать статью в Википедии и убедиться, что вы полностью понимаете проблемы в игре.
EDIT: я собирался ввести для вас намного больше информации, но потом я понял, что ваш вопрос действительно является дубликатом этого вопроса StackOverflow . Я бы рекомендовал прочитать это как отправную точку.
Это зависит от того, что вы пытаетесь защитить. Если вас беспокоит, что информация, содержащаяся в сеансе, может быть раскрыта или изменена, вам не нужно беспокоиться об этом, поскольку она может быть видна и изменена только сервером.
Если вас беспокоит возможность того, что некоторые люди могут использовать сеансы других людей, вы можете сделать следующее:
Используйте версию пароля md5 в базе данных, а затем md5 зашифруйте пароль сеанса, чтобы, если пароль правильный, то эти 2 значения будут одинаковыми.