Я работаю над РИА на PHP. Чтобы попытаться предотвратить захват сеанса, я ввел токен, созданный при входе в систему, на основе соли, номер недели ISO-8601 и IP-адрес пользователя.
$salt = "blahblahblah"; $tokenstr = date('W') . $salt . $_SERVER['REMOTE_ADDR']; $token_md5 = md5($tokenstr); define("token_md5", $token_md5);
В настоящее время он передается GET или POST с каждым запросом, но мне было интересно, могу ли я избежать этого, предложив его как файл cookie, поскольку он зависит от IP-адреса пользователя. Я только сейчас изучаю сессии, поэтому мне было интересно, есть ли проблемы с безопасностью в этом? Это плохая идея?
Любые данные, которые хранит пользователь, могут быть украдены; любые данные, отправленные посетителем, могут быть подделаны. Лучше хранить удаленный IP-адрес в $_SESSION
при открытии сеанса и сравнивать удаленный IP-адрес с каждым запросом. Если они не совпадают, это, вероятно, угон. Создайте новый идентификатор и снова войдите в систему.
session_regenerate_id()
отлично подходит для предотвращения захвата сеанса.
session_regenerate_id
– обновить текущий идентификатор сеанса с вновь созданным
Непрерывно вращайте session_id для каждого посещения страницы. Это очень затрудняет захват постоянно движущейся цели.
Я сделал RIA с тем же подходом, который вы сделали, и я просто настроил SSL на приложение для обеспечения безопасности. Поскольку Flex и удаленный доступ без сеанса. Я рекомендую использовать SSL. Мой сотрудник также разработал приложение с пользовательским логином / выходом из системы, и он сделал то же самое.