Понимание безопасности AppKey (без секрета)

1

Я видел много сервисов, в основном картографических сервисов, таких как GMaps или MapQuest, которые требуют, чтобы пользователи ранее регистрировали приложение appKey. Позже, по каждому запросу пользователь должен присоединить appKey например http://server/service?appKey=sdf7dfj34.

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

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

Мои вопросы:

  • Безопасен ли этот контроль?
  • Могу ли я обеспечить, чтобы пользователь действительно регистрировался.
  • Если параметры domain-appKey возможны, как его реализовать? (Я использую Java-Spring).

Я должен уточнить свое намерение - пользователи могут запрашивать данные через appKey, используя JavaScript + AJAX.

Благодарю.

Теги:
spring
security

1 ответ

0

Не можете ли вы включить домен в appKey? Например, часть appKey - хэш домена (для простейшего ключа вы можете использовать MD5 и base64 для кодирования хеш-байтов).

Затем, чтобы проверить домен, вы имеете hash домен запроса и сравниваете его с appKey.

Чтобы уточнить:

  1. Пользователь хочет получить appKey для домена "user.domain.com".

  2. Вы используете hash user.domain.com для SOME_DOMAIN_HASH_TOKEN.

  3. AppKey будет SOME_GUID + SOME_DOMAIN_HASH_TOKEN (+ может быть что-то еще)

  4. Пользователь отправляет appKey на ваш сервер из какого-либо домена.

  5. Вы передаете домен из запроса и сравниваете его с хешем из appKey.

  6. Если оба являются SOME_DOMAIN_HASH_TOKEN, домен действителен.

  • 0
    Мое намерение состоит в том, что пользователи могут сделать запрос через AJAX. Может ли быть проблемой определить домен, с которого сделаны запросы? Я имею в виду, потому что код выполняется браузером. Благодарю.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню