У меня есть аутентификация сеанса на основе User-Agent. После каждого запроса я проверяю, изменился ли пользовательский агент. Если это так, пользователь выйдет из системы (сеанс, возможно, был захвачен).Аутентификация сеанса PHP на основе User Agent
Все прошло отлично, пока ... некоторые пользователи IE не жаловались на проблемы после запросов ajax.
После нескольких бессонных ночей я начал регистрировать пользовательские агенты для каждого запроса и сравнивал их. И WTF, некоторые версии IE добавляют «ICAPoHTTPS» к пользовательскому агенту, если это запрос ajax.
У кого-нибудь есть идея, почему?
Спасибо, и я надеюсь, что это поможет другим ...
Я думал об использовании ip-адреса, но на мобильных устройствах часто бывают динамические IP-адреса (то есть, изменение IP-адресов при каждом запросе). Также на «нормальных» интернет-соединениях есть динамические ips, и это может вызвать проблемы, если у вас длительный сеанс. – grundig
Возможно, вы захотите использовать шаблон [CSRF tokenizing] (https://www.owasp.org/index.php/Cross-Site_Request_Forgery_ (CSRF) _Prevention_Cheat_Sheet), чем. У этого есть свои недостатки, но это довольно устойчивое решение. Зависит от вида обслуживания, над которым вы работаете. – yergo
Я исправил его, удалив «ICAPoHTTPS» из пользовательского агента. Я знаю, что это не чистый путь, но на тот момент, когда он должен выполнять эту работу. Но в будущем я обязательно сделаю это с помощью входа в систему ajax и сохраню оба пользовательских агента. Да, я знаю, но поскольку я использую только хэш пользовательского агента, это не должно быть проблемой безопасности. Благодаря! – grundig