Intereting Posts
Будет ли выигрыш в производительности CakePHP, если он откажется от поддержки двигателей JS / AJAX? Запрос FQL для facebook Как передать значения между страницами PHP для MVC? Нельзя использовать объект типа __PHP_Incomplete_Class как массив Ошибка анализа: синтаксическая ошибка, неожиданный «public» (T_PUBLIC) Передача событий в режиме Laravel 5.4 не работает с vuejs Являются ли динамические подготовленные заявления плохими? (с php + mysqli) Как использовать php для передачи данных в автозаполнение jQuery? Ошибка при попытке запустить HipHop в «режиме 2 (компиляция HipHop во временном каталоге и запуск скомпилированной программы из командной строки») Композитный образец и инъекция зависимостей Как я могу сортировать массивы в php с помощью пользовательского алфавита? Обновлять Div автоматически с помощью JQuery, когда новая запись добавлена ​​в базу данных MySql Отсутствуют теги HTML, когда SELECT из MySQL (Codeigniter) функция доступности домена php Что случилось с использованием $ _REQUEST ?

PHP: Предотвращение захвата сеанса с помощью токена, хранящегося в файле cookie?

Я работаю над РИА на 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-адреса пользователя. Я только сейчас изучаю сессии, поэтому мне было интересно, есть ли проблемы с безопасностью в этом? Это плохая идея?

Solutions Collecting From Web of "PHP: Предотвращение захвата сеанса с помощью токена, хранящегося в файле cookie?"

Любые данные, которые хранит пользователь, могут быть украдены; любые данные, отправленные посетителем, могут быть подделаны. Лучше хранить удаленный IP-адрес в $_SESSION при открытии сеанса и сравнивать удаленный IP-адрес с каждым запросом. Если они не совпадают, это, вероятно, угон. Создайте новый идентификатор и снова войдите в систему.

session_regenerate_id() отлично подходит для предотвращения захвата сеанса.

session_regenerate_id – обновить текущий идентификатор сеанса с вновь созданным

Непрерывно вращайте session_id для каждого посещения страницы. Это очень затрудняет захват постоянно движущейся цели.

Я сделал RIA с тем же подходом, который вы сделали, и я просто настроил SSL на приложение для обеспечения безопасности. Поскольку Flex и удаленный доступ без сеанса. Я рекомендую использовать SSL. Мой сотрудник также разработал приложение с пользовательским логином / выходом из системы, и он сделал то же самое.