Безопасны ли параметры запроса rest api при отправке через HTTPS?

#c# #api #rest #wcf #authentication

#c# #API #rest #wcf #аутентификация

Вопрос:

У меня есть следующий метод rest api

 [OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/GetStuff?userName={userName}amp;password={password}amp;howMany={howMany}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Things[] GetStuff(string userName, string password, int howMany);
 

Безопасна ли отправка имени пользователя и пароля как части строки запроса через https или есть лучший способ аутентификации?

Комментарии:

1. URL-адреса хранятся в журналах веб-сервера, истории браузера и т. Д. Если вы считаете, что это безопасно, то у вас есть свой ответ… Всегда есть лучший способ

Ответ №1:

Нет, это не так. Как упоминалось в комментарии, если кто-то украдет ваши журналы, у него будет доступ ко всем параметрам запроса. (в вашем случае конфиденциальная информация).

Параметры запроса (правильно) используются для индемпотентных запросов (например GET ) для фильтрации вашего результирующего набора.

С другой стороны, значения заголовка безопасны. Вот почему мы обычно отправляем заголовки аутентификации / авторизации, а не параметры запроса.

Проверьте заголовок авторизации для примера этого.

Заголовок запроса авторизации HTTP содержит учетные данные для аутентификации агента пользователя на сервере, обычно, но не обязательно, после того, как сервер ответил с неавторизованным статусом 401 и заголовком WWW-Authenticate.