Как обезопасить веб-API с открытым ключом от несанкционированного доступа? - PullRequest
0 голосов
/ 10 января 2019

Понимая природу веб-API, были подняты некоторые вопросы относительно его безопасности. Каковы оптимальные методы для разработки веб-API таким образом, чтобы только авторизованный пользователь мог иметь к нему доступ. Я пытался проверить приведенные ниже варианты, но ни один из них не смог достичь идеальной безопасности.

1) Я не могу полагаться на источник запроса, ссылку или строку агента пользователя, поскольку они могут быть легко подделаны.

2) Веб-API требует только открытый ключ для доступа к нему, поэтому токен CSRF также не подходит для реализации.

Есть ли другой способ убедиться, что запрос поступает только из надежного источника?

В моем случае я хотел бы реализовать API на стороне клиента, например, Google Map, где любой, кто приобрел доступ к API, внесет в белый список домен своего веб-сайта и может добавить мой плагин на свой веб-сайт. Затем плагин отправит запрос в мой API от имени пользователя.

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

1 Ответ

0 голосов
/ 10 января 2019

Вы ничего не упоминаете о сценарии использования, особенно, если клиент - это система или человек?

Во-первых, безопасность по неизвестности никогда не бывает хорошим выбором. Во-вторых, считается «плохой практикой» «создавать свою собственную систему безопасности», гораздо лучше стоять на плечах тех, кто обладает знаниями и опытом в области безопасности.

Не зная точного пользовательского регистра, трудно прийти с большим количеством предложений ... однако, я бы посоветовал вам взглянуть на такие вещи, как токены jwt (я предполагаю, что у вас есть человек, стоящий за веб-клиентом, так как пользователь вашего веб-сервиса) ... так как вы пометили вопрос asp.net-web-api, я бы также посоветовал вам взглянуть на проект https://identityserver.io ... Ранее я использовал IdentityServer4 с успехом в большом проекте asp.net webapi ...

...