Является ли отправкой имени пользователя через пользовательский заголовок HTTP хорошей идеей?

У меня есть маршрут в RESTful API, где мне нужно передать одно имя пользователя (адрес электронной почты), но не пароль. Маршрут разработан с использованием метода GET, поэтому мои параметры - это параметры запроса или пользовательские заголовки HTTP.

Я читал, что отправка пользовательских имен через параметры запроса не является хорошей практикой, но не может найти никакой связанной информации о настраиваемом заголовке.

Не могли бы вы поделиться своим предложением по этому поводу?

3 голоса | спросил Emil Gurbanov 4 62017vEurope/Moscow11bEurope/MoscowSat, 04 Nov 2017 01:57:03 +0300 2017, 01:57:03

1 ответ


3
  

Я читал, что отправка пользовательских имен через параметры запроса не является хорошей практикой

Где вы это читаете?

Есть несколько вещей, о которых вам следует позаботиться, отправляя что-либо через параметр запроса HTTP GET:

  • Чувствительная информация. Включение такой информации в URI явно неверно. Хотя параметры запроса шифруются при использовании HTTPS, эти параметры по-прежнему сохраняются не защищенным способом. Журналы HTTP являются одним из примеров, когда конфиденциальной информации нет места.

  • Длинные параметры. Хотя HTTP довольно разрешительный, когда дело доходит до длинных URI, ваша инфраструктура может быть не такой разрешающей. Например, ограничение по умолчанию (которое легко может быть изменено) для всего URI в HAProxy составляет 8K, а некоторые приложения могут ожидать более короткие URI.

  • Юникодовые символы. . Сами по себе символы Unicode в URI не имеют ничего плохого, однако вы должны убедиться, что ваше приложение правильно их обрабатывает как при их отправке (через AJAX или гиперссылки), так и при получении их на стороне сервера.

  • Безопасность. Если URI, например https: //example. com /login /user1 регистрирует пользователя user1, это может быть не то, что вы хотите с точки зрения безопасности. Более серьезно, никогда не доверяйте никакому вводу, и это правило включает имя пользователя: тот факт, что кто-то сказал вам в запросе, что он является user1 не означает ничего . Убедитесь, что имена пользователей используются в правильном контексте. Примером правильного контекста будет https://example.com/profile/user1 , страница что приводит к общедоступному профилю пользователя или, аналогично, https://blog.example.com/сообщений /user1 .

Имена пользователей не являются конфиденциальной информацией: они часто являются единственной информацией о пользователе, который является общедоступным. Ожидается, что они тоже не будут слишком длинными, иначе у вас, вероятно, будут более важные проблемы, чем длина ваших URI. Они могут и обычно содержать символы Юникода, но как только вы проверяете, что ваше приложение справляется с этим, там нет проблемы. То же самое касается безопасности: если вы неправильно используете вход, у вас все равно будет такая же проблема с заголовками HTTP или любой формой ввода.

Итак, нет, вам не нужно «скрывать» имена пользователей в любом месте, будь то в заголовках HTTP, куки или тела запроса.

ответил Arseni Mourzenko 4 62017vEurope/Moscow11bEurope/MoscowSat, 04 Nov 2017 02:42:09 +0300 2017, 02:42:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132