Корректный способ безопасно сохранить маркер/секрет/и т.д. от OAuth?

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

Теперь я задаюсь вопросом, что рекомендуемый безопасный путь состоит в том, чтобы сохранить ответы в моей локальной базе данных и сессии?

  • Что я должен сохранить?
  • Где я должен сохранить его?

Этот пример twitter-oauth-with-rails приложение хранит a user.id на сессии и пользовательской таблице имеет token и secret. Но это кажется, что было бы действительно легко взломать и получить секрет, просто передав в убивании идентификаторов проверочного пользователя, нет?

14
задан Lance Pollard 3 May 2010 в 22:04
поделиться

2 ответа

Если вы разрабатываете веб-приложение, вы можете добавить поле скрытое в форму, отправляемую пользователем, с некоторой хеш-подобной значение, вычисленное с помощью user.id , поэтому злоумышленники не могут изменить это значение и просто «угадать» для токена доступа

1
ответ дан 1 December 2019 в 16:24
поделиться

Токены бесполезны без потребительского ключа/секрета вашего приложения twitter, поскольку они не одинаковы для каждого приложения, а зависят от потребительского ключа/секрета.

Чтобы получить переменную сессии, вам придется угадать идентификатор сессии, что не так просто сделать.

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

Обновление: Я не уверен, правильно ли я понимаю, что вы имеете в виду под доступом к токенам из базы данных путем угадывания ID.

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

6
ответ дан 1 December 2019 в 16:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: