Internet Explorer — аутентификация сеанса на основе агента пользователя PHP

У меня есть аутентификация сеанса на основе агента пользователя. После каждого запроса я проверяю, изменился ли пользовательский агент. Если это так, пользователь вышел из системы (возможно, был захвачен сеанс).

Все работало идеально, пока … некоторые пользователи IE не жаловались на проблемы после запросов ajax.

После нескольких бессонных ночей я начал регистрировать пользовательские агенты для каждого запроса и сравнивал их. И WTF, некоторые версии IE добавляют «ICAPoHTTPS» к пользовательскому агенту, если это ajax-запрос.

У кого-нибудь есть идея, почему?

Спасибо, и я надеюсь, что это поможет другим …

1

Решение

Полезные новости, не заметил этого.

В любом случае, я бы не стал использовать User Agent, так как он основан на программном обеспечении / заголовке, и если кто-то может перехватить сеанс и вставить куки в браузер должным образом, он, вероятно, сможет перехватить строку агента пользователя и внедрить ее тоже.

Я обычно использую REMOTE_ADDR, что также не мешает человеку, работающему из той же подсети, что и его жертва.


Редактировать:

Вы можете обойти это, отправив форму входа через ajax, а затем перенаправить при успехе. Предполагая, что сеанс является новым при отображении формы, он будет собирать стандартную строку пользовательского агента, а при входе в действие — вторичную. Таким образом, в вашей ситуации вы соберете не более двух строк User Agent, которые вы хотите проверить.

Надеюсь, вы знаете, что пользовательский агент является редактируемым заголовком и может использоваться для внедрить вредоносный код / ​​запросы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]