Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ПРИМЕНИМО К: пакет SDK версии 4
В этой статье описываются потенциальные риски безопасности при подключении пользователей к боту, например с помощью элемента управления "Веб-чат ". Кроме того, в нем показаны решения по устранению неполадок с помощью параметров расширенной проверки подлинности Direct Line и безопасной обработки идентификаторов пользователя .
Существует два удостоверения пользователя:
- Идентичность пользователя канала. Злоумышленник может использовать его для олицетворения.
- Идентификация пользователя, предоставляемая поставщиком идентификации, который используется ботом для аутентификации пользователя. Злоумышленник может использовать его для подделки личности.
Олицетворение
Олицетворение относится к действиям злоумышленника, который заставляет бота думать, что они кто-то другой. Например, в веб-чате злоумышленник может олицетворить другого пользователя, изменив идентификатор пользователя экземпляра веб-чата.
Уменьшение риска выдачи себя за другого
Сделайте идентификатор пользователя недоступным.
Включите расширенный параметр проверки подлинности канала Direct Line, чтобы разрешить службе Azure AI Bot дополнительно обнаруживать и отклонять любые изменения идентификатора пользователя. Это означает, что идентификатор пользователя (
Activity.From.Id
) для сообщений из Direct Line в бот всегда будет совпадать с тем, который использовался для инициализации элемента управления "Веб-чат".Замечание
Direct Line создает токен на основе секрета Direct Line и внедряет
User.Id
его в токен. Это гарантирует, что сообщения, отправленные боту, имеютUser.Id
в качествеFrom.Id
активности. Если клиент отправляет сообщение в Direct Line с другимFrom.Id
, он будет изменен на ID, встроенный в токен, прежде чем сообщение будет переадресовано боту. Поэтому вы не можете использовать другой идентификатор пользователя после инициализации секрета канала с этим идентификатором.Эта функция требует, чтобы идентификатор пользователя начинался с
dl_
, как показано ниже.Подсказка
Для регионального бота задайте
dlUrl
в соответствии с выбранным регионом.
Если выбрана европа, задайте значение "https://europe.directline.botframework.com/v3/directline/tokens/generate".
Если выбрана индия, задайте значение "https://india.directline.botframework.com/v3/directline/tokens/generate".
Дополнительные сведения о региональных ботах см. в разделе "Регионизация" в службе Azure AI Bot.public class HomeController : Controller { private const string secret = "<TODO: DirectLine secret>"; private const string dlUrl = "https://directline.botframework.com/v3/directline/tokens/generate"; public async Task<ActionResult> Index() { HttpClient client = new HttpClient(); var userId = $"dl_{Guid.NewGuid()}"; HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, dlUrl); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secret); request.Content = new StringContent( JsonConvert.SerializeObject( new { User = new { Id = userId } }), Encoding.UTF8, "application/json"); var response = await client.SendAsync(request); string token = String.Empty; if (response.IsSuccessStatusCode) { var body = await response.Content.ReadAsStringAsync(); token = JsonConvert.DeserializeObject<DirectLineToken>(body).token; } var config = new ChatConfig() { Token = token, UserId = userId }; return View(config); } }
Созданный токен, основанный на секрете Direct Line, затем используется в элементе управления Веб-чат, как показано ниже:
@model Bot_Auth_DL_Secure_Site_MVC.Models.ChatConfig @{ ViewData["Title"] = "Home Page"; } <div id="webchat" role="main" /> <head> <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script> </head> <body> <script> window.WebChat.renderWebChat({ directLine: window.WebChat.createDirectLine({ token: '@Model.Token' }), userID: '@Model.UserId' }, document.getElementById('webchat')); </script> </body>
Подмена удостоверений
Спуфинг личности относится к действию злоумышленника, который принимает личность легитимного пользователя и затем использует эту личность для достижения злонамеренной цели.
Когда бот просит пользователя канала A авторизоваться через поставщика удостоверений, процесс авторизации должен гарантировать, что пользователь A является единственным, кто авторизуется через этого поставщика. Если другому пользователю также разрешен вход через поставщика, у него будет доступ к ресурсам пользователя A через бота.
Смягчение подмены личности пользователя
В элементе управления "Веб-чат" есть два механизма обеспечения входа соответствующего пользователя.
Волшебный код. В конце процесса входа пользователь будет представлен случайным образом созданный 6-значный код (волшебный код). Пользователь должен ввести этот код в беседе, чтобы завершить процесс входа. Это, как правило, приводит к плохому интерфейсу пользователя. Кроме того, он подвержен фишинговым атакам; Злоумышленник может обмануть другого пользователя для входа и получения магического кода.
Расширенная проверка подлинности Direct Line. Используйте расширенную проверку подлинности Direct Line, чтобы гарантировать, что процесс входа можно выполнить только в том же сеансе браузера , что и клиент веб-чата.
Чтобы включить эту защиту, запустите веб-чат с маркером Direct Line, который содержит список доверенных доменов, которые могут размещать клиент веб-чата бота. С помощью расширенных параметров проверки подлинности можно статически указать список доверенных доменов (доверенных источников) на странице конфигурации Direct Line. См. раздел "Настройка расширенной проверки подлинности ".