Я только что начал изучать OAuth, и это выглядит действительно хорошим. У меня есть OAuth с Твиттером, работающим в рубине прямо сейчас.
Теперь я задаюсь вопросом, что рекомендуемый безопасный путь состоит в том, чтобы сохранить ответы в моей локальной базе данных и сессии?
Этот пример twitter-oauth-with-rails приложение хранит a user.id
на сессии и пользовательской таблице имеет token
и secret
. Но это кажется, что было бы действительно легко взломать и получить секрет, просто передав в убивании идентификаторов проверочного пользователя, нет?
Если вы разрабатываете веб-приложение, вы можете добавить поле скрытое
в форму, отправляемую пользователем, с некоторой хеш-подобной значение, вычисленное с помощью user.id
, поэтому злоумышленники не могут изменить это значение и просто «угадать» для токена доступа
Токены бесполезны без потребительского ключа/секрета вашего приложения twitter, поскольку они не одинаковы для каждого приложения, а зависят от потребительского ключа/секрета.
Чтобы получить переменную сессии, вам придется угадать идентификатор сессии, что не так просто сделать.
Если вы хотите, вы можете хранить эти токены в сессии, но я бы предложил хранить токены пользователей в вашей базе данных со всеми другими данными пользователя, чтобы ваша сессия содержала только данные для идентификации пользователя в вашей системе.
Обновление: Я не уверен, правильно ли я понимаю, что вы имеете в виду под доступом к токенам из базы данных путем угадывания ID.
Есть ли у вас какая-либо аутентификация, чтобы пользователи вводили какие-то учетные данные для доступа к своим данным? Вы должны хранить токены так же, как вы храните адрес электронной почты или пароль пользователя, и только аутентифицированные пользователи должны иметь к ним доступ.