Как я могу убедиться, что http-запрос приходит от конкретного пользователя? - PullRequest
3 голосов
/ 04 января 2012

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

Пользователь сможет создавать ресурсы в моем веб-приложении данных, которые должны быть сохранены для сбора данных этого пользователя.

Я ожидаю, что этот пользовательидентификатор будет передан веб-приложению в теле http-запроса.Однако я обеспокоен тем, что злонамеренная атака может переписать имя пользователя в теле, чтобы запросы выглядели так, как если бы они были от другого пользователя.

Что можно сделать, чтобы сделать это безопаснее?(И считается ли это атакой CSRF?)

Новый сервис написан на Java с Spring 3.

Ответы [ 2 ]

5 голосов
/ 04 января 2012

Вы никогда не можете гарантировать, что запрос http поступил от определенного пользователя, вы можете только попытаться подтвердить пользователя и запрос.Обычно это делается путем создания заявки во время входа в систему или процесса аутентификации, а затем запрашивания этой заявки при последующих запросах.Затем вы можете сопоставить билет с пользователем и принять его как действительный.Срок действия билета истекает после периода бездействия, требующего от пользователя повторной регистрации.

0 голосов
/ 04 января 2012

Вы должны передавать запросы через тот же стек безопасности, который использует основной веб-сайт, если это возможно.

Если это невозможно, я бы использовал Spring Security для проверки подлинности. Я не уверен, какие плагины для Spring Security уже существуют для такой аутентификации запросов на обслуживание, но вы всегда можете потребовать, чтобы cookie использовался для сеанса, и тогда это просто вопрос клиента, выполняющего шаги аутентификации. *

Таким образом, вы можете использовать «нормальную» форму входа в систему или собрать настройку запроса токена, но это гораздо сложнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...