HTTP-аутентификация против сложного URL - PullRequest
0 голосов
/ 12 января 2020

Представьте, что мне нужно предоставить защищенную конечную точку с личными данными. Рассмотрим user1 с password1234. Есть ли разница в безопасности между:

  1. https://website.com/myendpoint/user1/password1234

  2. https://website.com/myendpoint с HTTP Basi c Auth с учетными данными, указанными выше

Мне кажется, что на самом деле нет никакой разницы, но у меня нет конкретных / сильных аргументов для этого.

1 Ответ

1 голос
/ 12 января 2020

Существует действительно существенная разница. В соответствии с рекомендациями, вы не должны включать в URL любую конфиденциальную информацию (не говоря уже о паролях). Причины следующие:

  • URL регистрируются на сервере (обычно в файлы, но другие хранилища данных могут быть даже хуже), что может позволить злоумышленнику извлечь эти данные, например, резервные копии также.

  • URL-адреса могут быть зарегистрированы и / или проверены на промежуточных прокси. Рассмотрим корпоративные прокси с проверкой https.

  • URL-адреса кэшируются на клиенте и добавляются в историю браузера. Сценарий или злоумышленник, получивший доступ к ap c, может извлечь пароли оттуда. Даже если предполагаемый клиент программный c, рассмотрите пользователей, которые хотят использовать ваше приложение или API из браузера по любой причине (пользователи очень креативны :)).

  • URL-адреса могут быть видимым на экране.

Конечно, не все из них применимы ко всем случаям использования, но некоторые из них вы не можете контролировать. Поэтому лучше не включать конфиденциальные данные в ваши URL. Http basi c через https намного лучше.

...