Веб-API ASP.NET core 2.2 регистрирует предупреждения, связанные с ключами защиты данных: как нам решить эту проблему? - PullRequest
1 голос
/ 01 апреля 2019

У нас есть веб-приложение ASP.NET core 2.2, демонстрирующее некоторые контроллеры веб-API.Наше приложение не имеет какого-либо механизма аутентификации, все открытые конечные точки могут быть вызваны анонимным пользователем.

Когда мы размещаем приложение под IIS, мы получаем три странных предупреждающих сообщения при запуске приложения.Вот журналы, которые мы получаем:

  1. Использование хранилища в памяти.Ключи не будут сохранены в хранилище.
  2. Нет ни профиля пользователя, ни реестра HKLM.Использование хранилища эфемерного ключа.Защищенные данные будут недоступны при выходе из приложения.
  3. Не настроен шифровщик XML.Ключ {GUID} может быть сохранен в хранилище в незашифрованном виде.

Все эти журналы имеют Microsoft.AspNetCore.DataProtection в качестве контекста журнала и записываются внутренними компонентами ядра ASP.NET.

Значение этих журналов мне кажется совершенно ясным: существует «ключ» (что бы это ни значило), который будет сохранен в памяти, поскольку не было предоставлено хранилище реестра (и, конечно, он будетпотеряться при выходе из приложения).Есть также предупреждение, указывающее, что этот ключ, если он сохранится, не будет зашифрован каким-либо образом.

На этом этапе я бы задал следующие вопросы:

  • что такоеGUID сообщается внутри журналов с именем «ключ»?Для чего используется?
  • Существует ли угроза безопасности, связанная с этими предупреждениями?
  • Должен ли я предпринять какие-либо действия?

НЕКОТОРЫЕ ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Некоторые блоги в Интернете предполагают, что такого рода предупреждения о защите данных связаны с использованием удостоверений ASP.NET, но мы не используем удостоверения в нашихприложение (у нас не включена аутентификация).Другие блоги предлагают настроить пул приложений хостинга для загрузки профиля пользователя: я уже пробовал это, но предупреждения все еще там.

ВАЖНОЕ ОБНОВЛЕНИЕ 2 апреля 2019

Я решил проблемублагодаря помощи команды разработчиков ядра asp.net.Для полной справки см. проблему github, которую я открыл вчера

Короче говоря, проблема связана с конфигурацией IIS на моей машине для разработки.Чтобы защита данных ядра ASP.NET работала должным образом, существует определенная конфигурация для IIS и пула приложений хостинга ( для получения полной справки см. Здесь )

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Если вы не используете какой-либо механизм аутентификации (например, ASP.NET Core Identity, использующий ключи этого типа) и если вы не используете DataProtection API где-то еще, вы можете пойти (пока).

Что там происходит?

Вы ввели запасной механизм для хранения ключей (в памяти). При перезапуске приложения вы потеряете ключи.

С какими проблемами вы можете столкнуться?

Пример: если вы используете механизмы аутентификации, у вас получатся ввернутые куки-файлы аутентификации, токены проверки электронной почты, токены сброса пароля и т. Д.

Что вы можете сделать прямо сейчас?

Если вы хотите (решение на будущее), вы можете хранить ключи где-нибудь (например, Redis).

Дальнейшее чтение: https://cypressnorth.com/programming/solved-using-memory-repository-keys-will-not-persisted-storage-asp-net-core-iis/

1 голос
/ 01 апреля 2019

Защита данных используется различными компонентами для шифрования данных во время выполнения, например:

  • Файлы cookie для аутентификации
  • Жетоны сброса идентификационного пароля

Подробнее об этом можно прочитать в документации: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/introduction?view=aspnetcore-2.2

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

...