Понимая природу веб-API, были подняты некоторые вопросы относительно его безопасности. Каковы оптимальные методы для разработки веб-API таким образом, чтобы только авторизованный пользователь мог иметь к нему доступ. Я пытался проверить приведенные ниже варианты, но ни один из них не смог достичь идеальной безопасности.
1) Я не могу полагаться на источник запроса, ссылку или строку агента пользователя, поскольку они могут быть легко подделаны.
2) Веб-API требует только открытый ключ для доступа к нему, поэтому токен CSRF также не подходит для реализации.
Есть ли другой способ убедиться, что запрос поступает только из надежного источника?
В моем случае я хотел бы реализовать API на стороне клиента, например, Google Map, где любой, кто приобрел доступ к API, внесет в белый список домен своего веб-сайта и может добавить мой плагин на свой веб-сайт. Затем плагин отправит запрос в мой API от имени пользователя.
Это хорошая идея, если я применяю некоторую логику сигнатуры запроса в веб-API, чтобы мой сервер мог проверить запросчик и отклонить несанкционированные источники. Я предполагаю, что должен был бы держать в секрете свою логику подписи запроса, и поэтому мне может понадобиться некоторая путаница в коде.