Механизм безопасности. Управление конфигурацией | Устранение рисков
Реализуйте политику безопасности содержимого (CSP) и отключите встроенный скрипт JavaScript
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Общие сведения о политике безопасности содержимого, справочные материалы по политике безопасности содержимого, сведения о компонентах обеспечения безопасности, общие сведения о политике безопасности содержимого, сведения об использовании CSP |
Шаги | Политика безопасности содержимого (CSP) — это многоуровневый механизм обеспечения безопасности, рекомендованный консорциумом W3C, который позволяет владельцам веб-приложений управлять содержимым их сайтов. CSP добавляется в виде заголовка ответа HTTP на веб-сервере и принудительно применяется в браузерах на стороне клиента. Эта политика основана на списке разрешений, то есть веб-сайт может объявить набор доверенных доменов, из которых можно скачивать активное содержимое, например скрипт JavaScript. CSP предоставляет следующие преимущества безопасности.
|
Пример
Пример политики:
Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com
Эта политика позволяет скачивать скрипты только с сервера веб-приложения и сервера Google Analytics. Все остальные скрипты отклоняются. Если на веб-сайте включена политика CSP, некоторые функции отключаются автоматически (см. ниже). Это позволяет предотвратить выполнение межсайтовых сценариев.
Пример
Встроенные скрипты выполняться не будут. Ниже приведены примеры встроенных скриптов.
<script> some JavaScript code </script>
Event handling attributes of HTML tags (for example, <button onclick="function(){}">
javascript:alert(1);
Пример
Строки не будут рассматриваться в качестве кода.
Example: var str="alert(1)"; eval(str);
Включите фильтр межсайтовых сценариев в браузере
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Фильтр защиты от межсайтовых сценариев |
Шаги | Конфигурация заголовка ответа X-XSS-Protection управляет фильтром выполнения межсайтовых сценариев в браузере. Этот заголовок ответа может иметь следующие значения.
Это функция браузера Chromium, которая использует сообщения о нарушениях для отправки сведений о нарушении в выбранный универсальный код ресурса (URI). Последние два параметра рассматриваются как безопасные значения. |
Отключите трассировку и отладку приложений ASP.NET перед развертыванием
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Общие сведения об отладке ASP.NET, Общие сведения о трассировке ASP.NET, Практическое руководство по включению трассировки для приложения ASP.NET, Практическое руководство по включению отладки для приложений ASP.NET. |
Шаги | Если трассировка страницы включена, каждый браузер, отправляющий к ней запрос, получает сведения о трассировке с данными о рабочем процессе и состоянии внутреннего сервера. Эти сведения могут быть секретными. Если включена отладка страницы, при возникновении ошибок на сервере все данные трассировки стека отправляются в браузер. Эти данные могут содержать секретные сведения о рабочем процессе сервера. |
Получайте доступ к сторонним скриптам JavaScript только из доверенных источников
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Недоступно |
Шаги | Используйте сторонние скрипты JavaScript только из доверенных источников На соответствующих конечных точках всегда должен быть включен протокол TLS. |
Внедрите защиту от кликджекинга на страницах ASP.NET
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Памятка по защите от кликджекинга OWASP, внутренняя документация Internet Explorer по борьбе с кликджекингом при помощи заголовка ответа X-Frame-Options |
Шаги | Кликджекинг — это механизм обмана, при котором злоумышленник использует прозрачные или непрозрачные уровни, чтобы обманным путем заставить пользователя нажать кнопку или щелкнуть ссылку на другой странице, когда он намеревается щелкнуть страницу верхнего уровня. Такая многоуровневая структура достигается за счет создания вредоносной страницы в фрейме, который загружает страницу жертвы. Таким образом, злоумышленник перехватывает щелчки мыши, сделанные на странице, и перенаправляет пользователей на другую страницу, скорее всего, принадлежащую другому приложению или домену (или и тому, и другому). Чтобы предотвратить кликджекинг, задайте соответствующие заголовки HTTP-ответа X-Frame-Options, не разрешающие использовать фреймы из других доменов в браузере. |
Пример
Заголовок X-FRAME-OPTIONS можно задать в файле IIS web.config. Фрагмент кода web.config для сайтов, не использующих фреймы, выглядит следующим образом:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="DENY"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Пример
Код web.config для сайтов, использующих фреймы только на страницах, расположенных в одном и том же домене, выглядит следующим образом:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="SAMEORIGIN"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Настройте доступ к веб-приложениям ASP.NET с включенной технологией CORS только из доверенных источников
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Веб-формы, MVC 5 |
Атрибуты | Недоступно |
Справочные материалы | Недоступно |
Шаги | Параметры безопасности веб-браузера предотвращают отправку запросов AJAX с веб-страницы к другому домену. Такое ограничение называется политикой одного источника. Эта политика предотвращает чтение вредоносным сайтом конфиденциальных данных с другого сайта. Тем не менее в некоторых случаях необходимо обеспечить безопасное предоставление API-интерфейсов, которые могут использовать другие сайты. Общий доступ к ресурсам независимо от источника (CORS) — это стандарт консорциума W3C, позволяющий серверу смягчить ограничения политики одного источника. С помощью CORS сервер может явным образом разрешить некоторые запросы независимо от источника, а другие — отклонить. Технология CORS более безопасная и гибкая, чем предыдущие технологии, например JSONP. По сути, чтобы включить CORS, в код веб-приложения необходимо добавить несколько заголовков HTTP-ответа (Access-Control-*). Это можно сделать несколькими способами. |
Пример
Если у вас есть доступ к файлу Web.config, то CORS можно добавить с помощью приведенного ниже кода.
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="https://example.com" />
</customHeaders>
</httpProtocol>
Пример
Если доступ к файлу web.config отсутствует, спецификацию CORS можно настроить, добавив следующий код C#:
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "https://example.com")
Обратите внимание, что в качестве значения атрибута Access-Control-Allow-Origin настоятельно необходимо задать конечный набор доверенных источников. При неправильной конфигурации этого параметра (например, если задать значение "*") вредоносные сайты смогут отправлять независимые от источника запросы к веб приложению без каких-либо ограничений, в результате чего приложение становится уязвимым для CSRF-атак.
Включите атрибут ValidateRequest на страницах ASP.NET
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Веб-формы, MVC 5 |
Атрибуты | Недоступно |
Справочные материалы | Сведения о предотвращении атак путем внедрения кода с помощью функции проверки запросов |
Шаги | Проверка запросов — это функция ASP.NET (начиная с версии 1.1), блокирующая прием содержимого с незашифрованным HTML-кодом на сервере. Эта функция помогает предотвращать некоторые атаки путем внедрения кода, с помощью которых злоумышленники могут оправлять неизвестный код скрипта клиента или HTML-код на сервер, сохранять его, а затем распространять другим пользователям. Мы настоятельно рекомендуем при необходимости проверять все входные данные и кодировать их в формате HTML. Проверка запросов выполняется путем сравнения всех входящих данных со списком потенциально опасных значений. При выявлении совпадения ASP.NET вызывает исключение |
Пример
Тем не менее эту функцию можно отключить на уровне страниц:
<%@ Page validateRequest="false" %>
Или на уровне приложения:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Обратите внимание, что функция проверки запросов не поддерживается и не входит в конвейер MVC6.
Используйте локально размещенные последние версии библиотек JavaScript
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Недоступно |
Шаги | Разработчики, пользующиеся стандартными библиотеками JavaScript (например, JQuery), должны использовать их утвержденные версии, не имеющие известных проблем с безопасностью. Мы рекомендуем использовать последние версии библиотек, так как в них добавлены исправления проблем с безопасностью, обнаруженных в предыдущих версиях. Если последний выпуск не поддерживается по причинам совместимости, используйте минимальные версии, приведенные ниже. Минимальные допустимые версии:
Никогда не скачивайте какие-либо библиотеки JavaScript с внешних сайтов, например в общедоступной сети доставки содержимого. |
Отключите автоматическое обнаружение типов MIME
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Запись блога по безопасности IE8, часть 5 о комплексной защите, Список MIME-типов |
Шаги | Заголовок X-Content-Type-Options — это HTTP-заголовок, используя который разработчики могут запретить определение типов MIME содержимого. Этот заголовок обеспечивает защиту от атак путем определения типов MIME. Для каждой страницы, на которой может быть содержимое, управляемое пользователем, необходимо использовать HTTP-заголовок X-Content-Type-Options:nosniff. Чтобы включить требуемый заголовок глобально для всех страниц в приложении, выполните одно из следующих действий. |
Пример
Добавьте заголовок в файл web.config, если приложение размещено в службах IIS 7 и более поздних версий.
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Пример
Добавьте заголовок с помощью глобальной функции Application_BeginRequest
void Application_BeginRequest(object sender, EventArgs e)
{
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
}
Пример
Внедрите пользовательский HTTP-модуль.
public class XContentTypeOptionsModule : IHttpModule
{
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += newEventHandler(context_PreSendRequestHeaders);
}
#endregion
void context_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
if (application == null)
return;
if (application.Response.Headers["X-Content-Type-Options "] != null)
return;
application.Response.Headers.Add("X-Content-Type-Options ", "nosniff");
}
}
Пример
Чтобы включить требуемый заголовок только для определенных страниц, добавьте его в отдельные ответы:
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
Удалите стандартные заголовки сервера на веб-сайтах Microsoft Azure во избежание использования отпечатка
Title | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | EnvironmentType: Azure |
Справочные материалы | Сведения об удалении стандартных заголовков сервера на веб-сайтах Microsoft Azure |
Шаги | Такие заголовки, как Server, X-Powered-By, X-AspNet-Version, отображают сведения о сервере и базовых технологиях. Мы рекомендуем удалить эти заголовки, чтобы предотвратить использование отпечатка в приложении. |
Настройка брандмауэра Windows для доступа к компоненту Database Engine
Title | Сведения |
---|---|
Компонент | База данных |
Этап SDL | Сборка |
Применимые технологии | SQL Azure, локальные |
Атрибуты | Отсутствуют, версия SQL: 12 |
Справочные материалы | Обзор правил брандмауэра Базы данных SQL Azure, Настройка брандмауэра Windows для доступа к компоненту Database Engine |
Шаги | Системы брандмауэров предотвращают несанкционированный доступ к ресурсам компьютера. Чтобы получить доступ к экземпляру ядра СУБД SQL Server через брандмауэр, необходимо настроить брандмауэр на компьютере под управлением SQL Server. |
Настройте доступ к веб-API ASP.NET с включенной технологией CORS только из доверенных источников
Title | Сведения |
---|---|
Компонент | Веб-API |
Этап SDL | Сборка |
Применимые технологии | MVC 5 |
Атрибуты | Недоступно |
Справочные материалы | Статья о включении запросов независимо от источника в веб-API 2 ASP.NET, Поддержка CORS в веб-API 2 ASP.NET |
Шаги | Параметры безопасности веб-браузера предотвращают отправку запросов AJAX с веб-страницы к другому домену. Такое ограничение называется политикой одного источника. Эта политика предотвращает чтение вредоносным сайтом конфиденциальных данных с другого сайта. Тем не менее в некоторых случаях необходимо обеспечить безопасное предоставление API-интерфейсов, которые могут использовать другие сайты. Общий доступ к ресурсам независимо от источника (CORS) — это стандарт консорциума W3C, позволяющий серверу смягчить ограничения политики одного источника. С помощью CORS сервер может явным образом разрешить некоторые запросы независимо от источника, а другие — отклонить. Технология CORS более безопасная и гибкая, чем предыдущие технологии, например JSONP. |
Пример
Откройте файл App_Start/WebApiConfig.cs и добавьте в метод WebApiConfig.Register следующий код:
using System.Web.Http;
namespace WebService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Пример
Атрибут EnableCors можно применить к методам действий в контроллере следующим образом:
public class ResourcesController : ApiController
{
[EnableCors("http://localhost:55912", // Origin
null, // Request headers
"GET", // HTTP methods
"bar", // Response headers
SupportsCredentials=true // Allow credentials
)]
public HttpResponseMessage Get(int id)
{
var resp = Request.CreateResponse(HttpStatusCode.NoContent);
resp.Headers.Add("bar", "a bar value");
return resp;
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"PUT", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Put(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"POST", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Post(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
}
Обратите внимание, что в качестве значения атрибута EnableCors настоятельно необходимо задать конечный набор доверенных источников. При неправильной конфигурации этого параметра (например, если задать значение "*") вредоносные сайты смогут отправлять независимые от источника запросы к API без каких-либо ограничений, в результате чего API становится уязвимым для CSRF-атак. Атрибут EnableCors можно добавить на уровне контроллера.
Пример
Чтобы отключить CORS в определенном методе класса, добавьте атрибут DisableCors следующим образом:
[EnableCors("https://example.com", "Accept, Origin, Content-Type", "POST")]
public class ResourcesController : ApiController
{
public HttpResponseMessage Put(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
public HttpResponseMessage Post(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
// CORS not allowed because of the [DisableCors] attribute
[DisableCors]
public HttpResponseMessage Delete(int id)
{
return Request.CreateResponse(HttpStatusCode.NoContent);
}
}
Title | Сведения |
---|---|
Компонент | Веб-API |
Этап SDL | Сборка |
Применимые технологии | MVC 6 |
Атрибуты | Недоступно |
Справочные материалы | Статья о включении запросов независимо от источника в ASP.NET Core 1.0 |
Шаги | В ASP.NET Core 1.0 запросы независимо от источника можно включить с помощью ПО промежуточного слоя или MVC. Если CORS включается через MVC, используются те же самые службы CORS, но без ПО промежуточного слоя. |
Способ 1. Включение CORS с помощью ПО промежуточного слоя: Чтобы включить CORS для всего приложения, добавьте ПО промежуточного слоя CORS в конвейер запросов с помощью метода расширения UseCors. При добавлении ПО промежуточного слоя CORS вы можете применить политику независимо от источника с помощью класса CorsPolicyBuilder. Это можно осуществить двумя путями:
Пример
Первый способ — вызвать UseCors с помощью лямбда-выражения. Лямбда-выражение принимает объект CorsPolicyBuilder:
public void Configure(IApplicationBuilder app)
{
app.UseCors(builder =>
builder.WithOrigins("https://example.com")
.WithMethods("GET", "POST", "HEAD")
.WithHeaders("accept", "content-type", "origin", "x-custom-header"));
}
Пример
Второй способ — определить одну или несколько именованных политик CORS, а затем выбрать политику по имени во время выполнения.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("https://example.com"));
});
}
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowSpecificOrigin");
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
Способ 2. Включение CORS в MVC. Разработчики также могут использовать MVC, чтобы применить CORS для конкретного действия, для контроллера или глобально для всех контроллеров.
Пример
Для конкретного действия. Чтобы указать политику CORS для определенного действия, добавьте в это действие атрибут [EnableCors]. Введите имя политики.
public class HomeController : Controller
{
[EnableCors("AllowSpecificOrigin")]
public IActionResult Index()
{
return View();
}
Пример
Для контроллера:
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
Пример
Глобально:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
});
}
Обратите внимание, что в качестве значения атрибута EnableCors настоятельно необходимо задать конечный набор доверенных источников. При неправильной конфигурации этого параметра (например, если задать значение "*") вредоносные сайты смогут отправлять независимые от источника запросы к API без каких-либо ограничений, в результате чего API становится уязвимым для CSRF-атак.
Пример
Чтобы отключить CORS для контроллера или действия, используйте атрибут [DisableCors].
[DisableCors]
public IActionResult About()
{
return View();
}
Шифруйте разделы файлов конфигурации веб-API, содержащие конфиденциальные данные
Title | Сведения |
---|---|
Компонент | Веб-API |
Этап SDL | Развертывание |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Руководство. Шифрование разделов конфигурации в ASP.NET 2.0 с помощью DPAPI, сведения об указании поставщика защищенной конфигурации, использование Azure Key Vault для защиты секретов приложения |
Шаги | Такие файлы конфигурации, как web.config и appsettings.json, часто используются для хранения конфиденциальной информации, включая имена пользователей, пароли, строки подключения к базам данных и ключи шифрования. Если эти данные не защищены, приложение становится уязвимым для злоумышленников, которые таким образом могут получить различные конфиденциальные сведения, например имена учетных записей пользователей, пароли, имена баз данных и имена серверов. На основе типа развертывания (Azure или локального) зашифруйте конфиденциальные разделы файлов конфигурации с помощью DPAPI или таких служб, как Azure Key Vault. |
Обеспечьте безопасность всех интерфейсов администратора с использованием надежных учетных данных
Title | Сведения |
---|---|
Компонент | Устройства Интернета вещей |
Этап SDL | Развертывание |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Недоступно |
Шаги | Все административные интерфейсы устройства или полевого шлюза должны быть защищены с использованием надежных учетных данных. Кроме того, также необходимо обеспечить защиту остальных предоставленных интерфейсов, например Wi-Fi, SSH, общих файловых ресурсов и FTP. Не следует использовать слабые пароли, заданные по умолчанию. |
Защитите устройства от выполнения неизвестного кода
Title | Сведения |
---|---|
Компонент | Устройства Интернета вещей |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Раздел о включении безопасной загрузки и шифрования BitLocker в Windows 10 IoT Базовая |
Шаги | Функция "Безопасная загрузка UEFI" обеспечивает выполнение в системе только двоичных файлов, подписанных в определенных центрах. Эта функция предотвращает выполнение неизвестного кода на платформе и защищает систему от потенциальных проблем с безопасностью. Включите функцию "Безопасная загрузка UEFI" и укажите список доверенных центров сертификации, использующихся для подписания кода. Подпишите весь код, развернутый на устройстве, в одном из доверенных центров. |
Шифруйте разделы операционной системы и другие разделы устройства Интернета вещей с помощью BitLocker
Title | Сведения |
---|---|
Компонент | Устройства Интернета вещей |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Недоступно |
Шаги | Windows 10 IoT Базовая предоставляет облегченную версию функции шифрования устройства с помощью технологии BitLocker. Во многом эта функция зависит от наличия доверенного платформенного модуля на платформе, а также от протокола PreOS в UEFI, который выполняет необходимые измерения. Эти измерения гарантируют, что операционная система имеет необходимую запись о запуске. Мы рекомендуем шифровать с помощью технологии BitLocker разделы операционной системы, а также все прочие разделы, на которых хранятся конфиденциальные данные. |
Включите минимальное количество служб и функций на устройстве
Title | Сведения |
---|---|
Компонент | Устройства Интернета вещей |
Этап SDL | Развертывание |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Недоступно |
Шаги | Не включайте или отключите любые функции или службы в операционной системе, не влияющие на работу решения. Например, если для устройства не требуется развертывать пользовательский интерфейс, установите Windows IoT Базовую в режиме без монитора. |
Шифруйте разделы операционной системы и другие разделы полевого шлюза Интернета вещей с помощью BitLocker
Title | Сведения |
---|---|
Компонент | Полевой шлюз Интернета вещей |
Этап SDL | Развертывание |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Недоступно |
Шаги | Windows 10 IoT Базовая предоставляет облегченную версию функции шифрования устройства с помощью технологии BitLocker. Во многом эта функция зависит от наличия доверенного платформенного модуля на платформе, а также от протокола PreOS в UEFI, который выполняет необходимые измерения. Эти измерения гарантируют, что операционная система имеет необходимую запись о запуске. Мы рекомендуем шифровать с помощью технологии BitLocker разделы операционной системы, а также все прочие разделы, на которых хранятся конфиденциальные данные. |
Измените учетные данные для входа в систему полевого шлюза по умолчанию во время установки
Title | Сведения |
---|---|
Компонент | Полевой шлюз Интернета вещей |
Этап SDL | Развертывание |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Недоступно |
Шаги | Измените учетные данные для входа в систему полевого шлюза по умолчанию во время установки |
Реализуйте процесс обновления встроенного ПО подключенных устройств в облачном шлюзе
Title | Сведения |
---|---|
Компонент | Облачный шлюз Интернета вещей |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Выбор шлюза: Центр Интернета вещей Azure |
Справочные материалы | Обзор управления устройствами Центра Интернета вещей,Учебник. Обновление устройств для Центра Интернета вещей Azure с использованием эталонного образа для Raspberry Pi 3 B+. |
Шаги | LWM2M — это протокол управления устройствами Интернета вещей, предоставленный международной организацией по разработке открытых стандартов для мобильных телефонов (Open Mobile Alliance, OMA). Управление устройствами Azure IoT позволяет взаимодействовать с физическими устройствами, используя задания устройств. Убедитесь, что облачный шлюз регулярно обновляет устройство и данные конфигурации с помощью функции управления устройствами с помощью Центра Интернета вещей Azure. |
Настройте элементы управления безопасностью конечных точек устройства в соответствии с политиками организации
Title | Сведения |
---|---|
Компонент | Отношения доверия между компьютерами |
Этап SDL | Развертывание |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Недоступно |
Шаги | Убедитесь, что на устройстве настроены элементы управления безопасностью конечных точек, например шифрование BitLocker, выполняемое на уровне дисков, антивирусная программа с обновленными подписями, брандмауэр на основе узла, обновления операционной системы, групповые политики и т. д., в соответствии с политиками безопасности организации. |
Обеспечьте безопасное управление ключами доступа к хранилищу Azure
Title | Сведения |
---|---|
Компонент | Хранилище Azure |
Этап SDL | Развертывание |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Руководство по безопасности службы хранилища Azure. Управление ключами учетной записи хранения |
Шаги | Хранилище ключей. Мы рекомендуем хранить ключи доступа к хранилищу Azure в качестве секрета в Azure Key Vault и извлекать их оттуда, когда они понадобятся приложению. Это связано со следующими причинами.
|
Настройте доступ к службе хранилища Azure с включенной технологией CORS только из доверенных источников
Title | Сведения |
---|---|
Компонент | Хранилище Azure |
Этап SDL | Сборка |
Применимые технологии | Универсальный шаблон |
Атрибуты | Недоступно |
Справочные материалы | Статья о поддержке CORS в службах хранилища Azure |
Шаги | Служба хранилища Azure позволяет включить CORS — общий доступ к ресурсам независимо от источника. Для каждой учетной записи хранения можно указать домены, которым разрешен доступ к ресурсам в ней. По умолчанию механизм CORS отключен для всех служб. Включить CORS можно с помощью REST API или клиентской библиотеки хранилища, вызвав один из методов для задания политик службы. |
Включите компонент регулирования служб WCF
Title | Сведения |
---|---|
Компонент | WCF |
Этап SDL | Сборка |
Применимые технологии | .NET Framework 3 |
Атрибуты | Недоступно |
Справочные материалы | MSDN, Fortify Kingdom |
Шаги | Если не задать ограничение на использование системных ресурсов, они могут исчерпаться, что в конечном счете может привести к отказу в обслуживании.
|
Пример
Ниже приведен пример конфигурации с включенной функцией регулирования.
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling maxConcurrentCalls="[YOUR SERVICE VALUE]" maxConcurrentSessions="[YOUR SERVICE VALUE]" maxConcurrentInstances="[YOUR SERVICE VALUE]" />
...
</system.serviceModel>
Применяйте раскрытие информации через метаданные, переданные WCF
Title | Сведения |
---|---|
Компонент | WCF |
Этап SDL | Сборка |
Применимые технологии | .NET Framework 3 |
Атрибуты | Недоступно |
Справочные материалы | MSDN, Fortify Kingdom |
Шаги | Используя метаданные, злоумышленники могут получить сведения о системе и спланировать тип атаки. Службы WCF могут предоставлять метаданные. В этих метаданных содержится подробное описание службы, и поэтому их не следует передавать в рабочих средах. Свойства HttpGetEnabled / HttpsGetEnabled класса ServiceMetaData определяют, будет ли служба предоставлять метаданные. |
Пример
Код ниже указывает WCF передавать метаданные службы.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);
Не передавайте метаданные службы в рабочей среде. Задайте для свойства HttpGetEnabled или HttpsGetEnabled класса ServiceMetaData значение false.
Пример
Код ниже указывает WCF не передавать метаданные службы.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = false;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);