Безопасность - обмен идентификационными номерами с клиентом, плохая практика? - PullRequest
1 голос
/ 03 октября 2011

Я планирую включить сервер заданий Gearman в архитектуру моего сайта.В частности, одной из задач, которую я планирую использовать с помощью gearman, является проверка подлинности Facebook на моем веб-сайте.

В настоящее время я разрешаю пользователям входить на мой сайт, авторизуя мое приложение Facebook через SDK JS Facebook, послеУспешная аутентификация Я отправляю user_token пользователя на свой сервер с помощью вызова AJAX, и как только сервер получает access_token, он запрашивает API Graph Facebook, чтобы получить информацию о текущем пользователе, и я соответственно устанавливаю сеанс пользователя.Я хочу отправить вызов API Facebook в рабочий поток.

Я бы отправил задание механизму, попросил, чтобы механизатор вернул идентификатор отложенного задания, отправил этот идентификатор обратно в браузер клиента и получил браузер.опрашивать сервер с установленными интервалами (например, 0,5 или 1,0 секунды), чтобы узнать, завершился ли вызов API, вернув идентификатор задания на сервер и проверив его состояние завершения задания.

Мой вопрос: есть ликакие-либо угрозы безопасности при совместном использовании внутреннего идентификатора работы с клиентом?

1 Ответ

1 голос
/ 04 октября 2011

Возможно, проблема не в общем доступе, но, поскольку пользователь отправляет jobDd обратно на сервер для проверки статуса, ничто не мешает пользователю просто изменить jobId и получить состояние других попыток аутентификации.Это может не быть проблемой (так как вы, вероятно, больше ничего не вернете), но вы будете передавать хотя бы немного информации о популярности вашего приложения любым конкурентам.

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

Клиент получит случайный ключ и затемиспользуйте это для запроса состояния текущей задачи, в то время как сервер, действующий между клиентом и Gearman, будет искать ключ в базе данных, получать фактический jobId и затем запрашивать Gearman.

...