Quadro de segurança: Gerenciamento de configuração | Atenuações
Implementar a Política de Segurança de Conteúdo (CSP) e desativar o JavaScript embutido
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | Uma introdução à política de segurança de conteúdo, referência de política de segurança de conteúdo, introdução à política de segurança de conteúdo, posso usar CSP? |
Passos | A Política de Segurança de Conteúdo (CSP) é um mecanismo de segurança de defesa profunda, um padrão W3C, que permite que os proprietários de aplicativos Web tenham controle sobre o conteúdo incorporado em seu site. O CSP é adicionado como um cabeçalho de resposta HTTP no servidor Web e é imposto no lado do cliente pelos navegadores. É uma política baseada em lista permitida - um site pode declarar um conjunto de domínios confiáveis a partir dos quais o conteúdo ativo, como JavaScript, pode ser carregado. O CSP oferece os seguintes benefícios de segurança:
|
Exemplo
Exemplo de política:
Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com
Esta política permite que os scripts sejam carregados apenas a partir do servidor da aplicação Web e do servidor do Google Analytics. Os scripts carregados a partir de qualquer outro site serão rejeitados. Quando o CSP está habilitado em um site, os seguintes recursos são automaticamente desativados para mitigar ataques XSS.
Exemplo
Os scripts embutidos não serão executados. Seguem-se exemplos de scripts em linha
<script> some JavaScript code </script>
Event handling attributes of HTML tags (for example, <button onclick="function(){}">
javascript:alert(1);
Exemplo
As cadeias de caracteres não serão avaliadas como código.
Example: var str="alert(1)"; eval(str);
Ativar o filtro XSS do navegador
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | Filtro de proteção XSS |
Passos | A configuração do cabeçalho de resposta X-XSS-Protection controla o filtro de script entre sites do navegador. Este cabeçalho de resposta pode ter os seguintes valores:
Esta é uma função do Chromium que utiliza relatórios de violação CSP para enviar detalhes para um URI de sua escolha. As duas últimas opções são consideradas valores seguros. |
ASP.NET aplicativos devem desabilitar o rastreamento e a depuração antes da implantação
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | ASP.NET Visão geral de depuração, Visão geral de rastreamento de ASP.NET, Como habilitar o rastreamento para um aplicativo ASP.NET, Como habilitar a depuração para aplicativos ASP.NET |
Passos | Quando o rastreamento está habilitado para a página, cada navegador que o solicita também obtém as informações de rastreamento que contêm dados sobre o estado do servidor interno e o fluxo de trabalho. Essas informações podem ser sensíveis em termos de segurança. Quando a depuração está habilitada para a página, os erros que acontecem no servidor resultam em dados de rastreamento de pilha completa apresentados ao navegador. Esses dados podem expor informações confidenciais de segurança sobre o fluxo de trabalho do servidor. |
Aceda apenas a JavaScripts de terceiros a partir de fontes fidedignas
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | N/A |
Passos | JavaScripts de terceiros devem ser referenciados apenas de fontes confiáveis. Os pontos finais de referência devem estar sempre em TLS. |
Certifique-se de que as páginas de ASP.NET autenticadas incorporem defesas de correção da interface do usuário ou click-jacking
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | OWASP click-jacking Defense Cheat Sheet, Internet Explorer Internals - Combatendo o click-jacking com X-Frame-Options |
Passos | O clickjacking, também conhecido como "ataque de reparação da interface do usuário", é quando um invasor usa várias camadas transparentes ou opacas para induzir um usuário a clicar em um botão ou link em outra página quando pretendia clicar na página de nível superior. Esta camada é conseguida através da criação de uma página maliciosa com um iframe, que carrega a página da vítima. Assim, o invasor está "sequestrando" cliques destinados à sua página e encaminhando-os para outra página, provavelmente de propriedade de outro aplicativo, domínio ou ambos. Para evitar ataques de clickjacking, defina os cabeçalhos de resposta HTTP X-Frame-Options adequados que instruem o navegador a não permitir o enquadramento de outros domínios |
Exemplo
O cabeçalho X-FRAME-OPTIONS pode ser definido via web.config do IIS. Trecho de código Web.config para sites que nunca devem ser enquadrados:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="DENY"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Exemplo
Código Web.config para sites que só devem ser enquadrados por páginas no mesmo domínio:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="SAMEORIGIN"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Certifique-se de que apenas origens confiáveis sejam permitidas se o CORS estiver habilitado em ASP.NET Aplicativos Web
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Formulários Web, MVC5 |
Atributos | N/A |
Referências | N/A |
Passos | A segurança do browser impede que uma página Web realize pedidos de AJAX para outro domínio. Essa restrição é chamada de política de mesma origem e impede que um site mal-intencionado leia dados confidenciais de outro site. No entanto, às vezes pode ser necessário expor APIs com segurança que outros sites podem consumir. O Cross Origin Resource Sharing (CORS) é um padrão W3C que permite que um servidor relaxe a política de mesma origem. Usando o CORS, um servidor pode permitir explicitamente algumas solicitações de origem cruzada enquanto rejeita outras. O CORS é mais seguro e flexível do que técnicas anteriores, como o JSONP. Em sua essência, habilitar o CORS se traduz em adicionar alguns cabeçalhos de resposta HTTP (Access-Control-*) ao aplicativo Web e isso pode ser feito de algumas maneiras. |
Exemplo
Se o acesso ao Web.config estiver disponível, o CORS pode ser adicionado através do seguinte código:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="https://example.com" />
</customHeaders>
</httpProtocol>
Exemplo
Se o acesso ao web.config não estiver disponível, o CORS poderá ser configurado adicionando o seguinte código C#:
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "https://example.com")
Observe que é fundamental garantir que a lista de origens no atributo "Access-Control-Allow-Origin" seja definida como um conjunto finito e confiável de origens. A falha ao configurar isso de forma inadequada (por exemplo, definindo o valor como '*') permitirá que sites mal-intencionados acionem solicitações de origem cruzada para o aplicativo >Web sem quaisquer restrições, tornando o aplicativo vulnerável a ataques CSRF.
Ativar o atributo ValidateRequest em páginas ASP.NET
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Formulários Web, MVC5 |
Atributos | N/A |
Referências | Validação de solicitação - Prevenindo ataques de script |
Passos | Validação do pedido, uma caraterística do ASP.NET desde a versão 1.1, impede que o servidor aceite conteúdo com HTML não codificado. Esta funcionalidade foi concebida para ajudar a impedir que alguns ataques de injeção de scripts com o código de script de cliente ou o HTML possam ser submetidos a um servidor, armazenado e, em seguida, apresentados a outros utilizadores. Ainda é altamente recomendável que valide todos os dados de entrada e que o código HTML o codifique quando adequado. A validação da solicitação é realizada comparando todos os dados de entrada com uma lista de valores potencialmente perigosos. Se ocorrer uma correspondência, ASP.NET gera um |
Exemplo
No entanto, esse recurso pode ser desativado no nível da página:
<%@ Page validateRequest="false" %>
ou, ao nível da aplicação
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Observe que o recurso Validação de Solicitação não é suportado e não faz parte do pipeline MVC6.
Usar as versões mais recentes hospedadas localmente das bibliotecas JavaScript
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | N/A |
Passos | Os desenvolvedores que usam bibliotecas JavaScript padrão como JQuery devem usar versões aprovadas de bibliotecas JavaScript comuns que não contenham falhas de segurança conhecidas. Uma boa prática é usar a versão mais recente das bibliotecas, uma vez que elas contêm correções de segurança para vulnerabilidades conhecidas em suas versões mais antigas. Se a versão mais recente não puder ser usada devido a razões de compatibilidade, as versões mínimas abaixo devem ser usadas. Versões mínimas aceitáveis:
Nunca carregue nenhuma biblioteca JavaScript de sites externos, como CDNs públicas |
Desativar a deteção automática de MIME
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | Segurança do IE8 Parte V: Proteção abrangente, tipo MIME |
Passos | O cabeçalho X-Content-Type-Options é um cabeçalho HTTP que permite aos desenvolvedores especificar que seu conteúdo não deve ser detetado por MIME. Este cabeçalho foi projetado para mitigar ataques MIME-Sniffing. Para cada página que possa conter conteúdo controlável pelo usuário, você deve usar o cabeçalho HTTP X-Content-Type-Options:nosniff. Para habilitar o cabeçalho necessário globalmente para todas as páginas do aplicativo, siga um destes procedimentos |
Exemplo
Adicione o cabeçalho no arquivo web.config se o aplicativo for hospedado pelos Serviços de Informações da Internet (IIS) 7 em diante.
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Exemplo
Adicione o cabeçalho através do Application_BeginRequest global
void Application_BeginRequest(object sender, EventArgs e)
{
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
}
Exemplo
Implementar módulo HTTP personalizado
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");
}
}
Exemplo
Você pode habilitar o cabeçalho necessário somente para páginas específicas adicionando-o a respostas individuais:
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
Remova cabeçalhos de servidor padrão em Sites do Windows Azure para evitar impressões digitais
Título | Detalhes |
---|---|
Componente | Aplicação Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | EnvironmentType - Azure |
Referências | Remoção de cabeçalhos de servidor padrão em Sites do Azure do Windows |
Passos | Cabeçalhos como Server, X-Powered-By, X-AspNet-Version revelam informações sobre o servidor e as tecnologias subjacentes. Recomenda-se suprimir esses cabeçalhos, evitando assim a impressão digital do aplicativo |
Configurar um Firewall do Windows para acesso ao Mecanismo de Banco de Dados
Título | Detalhes |
---|---|
Componente | Base de Dados |
Fase SDL | Compilar |
Tecnologias aplicáveis | SQL Azure, OnPrem |
Atributos | N/A, Versão SQL - V12 |
Referências | Como configurar um firewall do Banco de Dados SQL do Azure, Configurar um Firewall do Windows para acesso ao Mecanismo de Banco de Dados |
Passos | Os sistemas de firewall ajudam a prevenir o acesso não autorizado a recursos do computador. Para acessar uma instância do Mecanismo de Banco de Dados do SQL Server por meio de um firewall, você deve configurar o firewall no computador que executa o SQL Server para permitir o acesso |
Certifique-se de que apenas origens confiáveis sejam permitidas se o CORS estiver habilitado em ASP.NET API Web
Título | Detalhes |
---|---|
Componente | API da Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | MVC 5 |
Atributos | N/A |
Referências | Habilitando solicitações entre origens na API Web 2 ASP.NET ASP.NET API Web - Suporte CORS na API Web 2 ASP.NET |
Passos | A segurança do browser impede que uma página Web realize pedidos de AJAX para outro domínio. Essa restrição é chamada de política de mesma origem e impede que um site mal-intencionado leia dados confidenciais de outro site. No entanto, às vezes pode ser necessário expor APIs com segurança que outros sites podem consumir. O Cross Origin Resource Sharing (CORS) é um padrão W3C que permite que um servidor relaxe a política de mesma origem. Usando o CORS, um servidor pode permitir explicitamente algumas solicitações de origem cruzada enquanto rejeita outras. O CORS é mais seguro e flexível do que técnicas anteriores, como o JSONP. |
Exemplo
No App_Start/WebApiConfig.cs, adicione o seguinte código ao método 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 }
);
}
}
}
Exemplo
O atributo EnableCors pode ser aplicado a métodos de ação em um controlador da seguinte maneira:
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);
}
}
Observe que é fundamental garantir que a lista de origens no atributo EnableCors seja definida como um conjunto finito e confiável de origens. A falha ao configurar isso de forma inadequada (por exemplo, definindo o valor como '*') permitirá que sites mal-intencionados acionem solicitações de origem cruzada para a API sem quaisquer restrições, >tornando a API vulnerável a ataques CSRF. EnableCors pode ser decorado ao nível do controlador.
Exemplo
Para desabilitar CORS em um método específico em uma classe, o atributo DisableCors pode ser usado como mostrado abaixo:
[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);
}
}
Título | Detalhes |
---|---|
Componente | API da Web |
Fase SDL | Compilar |
Tecnologias aplicáveis | MVC 6 |
Atributos | N/A |
Referências | Habilitando solicitações entre origens (CORS) no ASP.NET Core 1.0 |
Passos | No ASP.NET Core 1.0, o CORS pode ser habilitado usando middleware ou MVC. Ao usar o MVC para habilitar o CORS, os mesmos serviços do CORS são usados, mas o middleware do CORS não. |
Abordagem-1 : Habilitando CORS com middleware: Para habilitar o CORS para todo o aplicativo, adicione o middleware CORS ao pipeline de solicitação usando o método de extensão UseCors. Uma política de origem cruzada pode ser especificada ao adicionar o middleware CORS usando a classe CorsPolicyBuilder. Poderá fazê-lo de duas formas:
Exemplo
A primeira é chamar UseCors com uma lambda. O lambda usa um objeto 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"));
}
Exemplo
O segundo é definir uma ou mais políticas CORS nomeadas e, em seguida, selecionar a política pelo nome em tempo de execução.
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!");
});
}
Abordagem-2 Habilitando CORS no MVC: os desenvolvedores podem, alternativamente, usar o MVC para aplicar CORS específicos por ação, por controlador ou globalmente para todos os controladores.
Exemplo
Por ação: para especificar uma política CORS para uma ação específica, adicione o atributo [EnableCors] à ação. Especifique o nome da política.
public class HomeController : Controller
{
[EnableCors("AllowSpecificOrigin")]
public IActionResult Index()
{
return View();
}
Exemplo
Por controlador:
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
Exemplo
Globalmente:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
});
}
Observe que é fundamental garantir que a lista de origens no atributo EnableCors seja definida como um conjunto finito e confiável de origens. A falha ao configurar isso de forma inadequada (por exemplo, definindo o valor como '*') permitirá que sites mal-intencionados acionem solicitações de origem cruzada para a API sem quaisquer restrições, >tornando a API vulnerável a ataques CSRF.
Exemplo
Para desativar o CORS para um controlador ou ação, use o atributo [DisableCors].
[DisableCors]
public IActionResult About()
{
return View();
}
Criptografar seções dos arquivos de configuração da API da Web que contêm dados confidenciais
Título | Detalhes |
---|---|
Componente | API da Web |
Fase SDL | Implementação |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | Como: Criptografar seções de configuração no ASP.NET 2.0 Usando DPAPI, Especificando um provedor de configuração protegido, Usando o Cofre de Chaves do Azure para proteger segredos de aplicativo |
Passos | Arquivos de configuração, como Web.config, appsettings.json são frequentemente usados para armazenar informações confidenciais, incluindo nomes de usuário, senhas, cadeias de conexão de banco de dados e chaves de criptografia. Se você não proteger essas informações, seu aplicativo estará vulnerável a invasores ou usuários mal-intencionados que obtenham informações confidenciais, como nomes de usuário e senhas de contas, nomes de bancos de dados e nomes de servidores. Com base no tipo de implantação (azure/on-prem), criptografe as seções confidenciais dos arquivos de configuração usando DPAPI ou serviços como o Azure Key Vault. |
Certifique-se de que todas as interfaces de administração estejam protegidas com credenciais fortes
Título | Detalhes |
---|---|
Componente | Dispositivo IoT |
Fase SDL | Implementação |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | N/A |
Passos | Todas as interfaces administrativas que o dispositivo ou gateway de campo expõe devem ser protegidas usando credenciais fortes. Além disso, quaisquer outras interfaces expostas como WiFi, SSH, compartilhamentos de arquivos, FTP devem ser protegidas com credenciais fortes. Senhas fracas padrão não devem ser usadas. |
Certifique-se de que o código desconhecido não pode ser executado em dispositivos
Título | Detalhes |
---|---|
Componente | Dispositivo IoT |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | Habilitando a Inicialização Segura e a Criptografia de Dispositivo BitLocker no Windows 10 IoT Core |
Passos | A Inicialização Segura UEFI restringe o sistema para permitir apenas a execução de binários assinados por uma autoridade especificada. Esse recurso impede que códigos desconhecidos sejam executados na plataforma e potencialmente enfraquecem a postura de segurança dela. Habilite a Inicialização Segura UEFI e restrinja a lista de autoridades de certificação confiáveis para assinar código. Assine todo o código implantado no dispositivo usando uma das autoridades confiáveis. |
Criptografar o sistema operacional e outras partições do dispositivo IoT com o BitLocker
Título | Detalhes |
---|---|
Componente | Dispositivo IoT |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | N/A |
Passos | O Windows 10 IoT Core implementa uma versão leve da Criptografia de Dispositivo BitLocker, que tem uma forte dependência da presença de um TPM na plataforma, incluindo o protocolo pré-OS necessário na UEFI que realiza as medições necessárias. Essas medições de pré-sistema operacional garantem que o sistema operacional mais tarde tenha um registro definitivo de como o sistema operacional foi lançado. Criptografe partições do sistema operacional usando o BitLocker e quaisquer outras partições também no caso de armazenarem dados confidenciais. |
Certifique-se de que apenas os serviços/recursos mínimos estão habilitados nos dispositivos
Título | Detalhes |
---|---|
Componente | Dispositivo IoT |
Fase SDL | Implementação |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | N/A |
Passos | Não habilite ou desative nenhum recurso ou serviço no sistema operacional que não seja necessário para o funcionamento da solução. Por exemplo, se o dispositivo não exigir que uma interface do usuário seja implantada, instale o Windows IoT Core no modo headless. |
Criptografar o sistema operacional e outras partições do IoT Field Gateway com o BitLocker
Título | Detalhes |
---|---|
Componente | Gateway de campo IoT |
Fase SDL | Implementação |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | N/A |
Passos | O Windows 10 IoT Core implementa uma versão leve da Criptografia de Dispositivo BitLocker, que tem uma forte dependência da presença de um TPM na plataforma, incluindo o protocolo pré-OS necessário na UEFI que realiza as medições necessárias. Essas medições de pré-sistema operacional garantem que o sistema operacional mais tarde tenha um registro definitivo de como o sistema operacional foi lançado. Criptografe partições do sistema operacional usando o BitLocker e quaisquer outras partições também no caso de armazenarem dados confidenciais. |
Verifique se as credenciais de login padrão do gateway de campo foram alteradas durante a instalação
Título | Detalhes |
---|---|
Componente | Gateway de campo IoT |
Fase SDL | Implementação |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | N/A |
Passos | Verifique se as credenciais de login padrão do gateway de campo foram alteradas durante a instalação |
Certifique-se de que o Cloud Gateway implementa um processo para manter o firmware dos dispositivos conectados atualizado
Título | Detalhes |
---|---|
Componente | Gateway de nuvem IoT |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | Escolha de gateway - Hub IoT do Azure |
Referências | Visão geral do Gerenciamento de Dispositivos do Hub IoT, tutorial de Atualização de Dispositivo para o Hub IoT do Azure usando a Imagem de Referência do Raspberry Pi 3 B+. |
Passos | LWM2M é um protocolo da Open Mobile Alliance for IoT Device Management. O gerenciamento de dispositivos do Azure IoT permite interagir com dispositivos físicos usando trabalhos de dispositivo. Certifique-se de que o Cloud Gateway implementa um processo para manter rotineiramente o dispositivo e outros dados de configuração atualizados usando o Gerenciamento de Dispositivos do Hub IoT do Azure. |
Verifique se os dispositivos têm controles de segurança de ponto final configurados de acordo com as políticas organizacionais
Título | Detalhes |
---|---|
Componente | Limite de confiança da máquina |
Fase SDL | Implementação |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | N/A |
Passos | Certifique-se de que os dispositivos tenham controles de segurança de ponto final, como BitLocker para criptografia no nível de disco, antivírus com assinaturas atualizadas, firewall baseado em host, atualizações do sistema operacional, políticas de grupo, etc., configurados de acordo com as políticas de segurança organizacionais. |
Garantir o gerenciamento seguro das chaves de acesso de armazenamento do Azure
Título | Detalhes |
---|---|
Componente | Armazenamento do Azure |
Fase SDL | Implementação |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | Guia de segurança do Armazenamento do Azure - Gerenciando suas chaves de conta de armazenamento |
Passos | Armazenamento de chaves: é recomendável armazenar as chaves de acesso do Armazenamento do Azure no Cofre de Chaves do Azure como um segredo e fazer com que os aplicativos recuperem a chave do cofre de chaves. Isto é recomendado devido às seguintes razões:
|
Certifique-se de que apenas origens confiáveis sejam permitidas se o CORS estiver habilitado no armazenamento do Azure
Título | Detalhes |
---|---|
Componente | Armazenamento do Azure |
Fase SDL | Compilar |
Tecnologias aplicáveis | Genérica |
Atributos | N/A |
Referências | Suporte CORS para os Serviços de Armazenamento do Azure |
Passos | O Armazenamento do Azure permite-lhe ativar o CORS – Cross Origin Resource Sharing. Para cada conta de armazenamento, você pode especificar domínios que podem acessar os recursos nessa conta de armazenamento. Por padrão, o CORS está desativado em todos os serviços. Você pode habilitar o CORS usando a API REST ou a biblioteca do cliente de armazenamento para chamar um dos métodos para definir as políticas de serviço. |
Habilitar o recurso de limitação de serviço do WCF
Título | Detalhes |
---|---|
Componente | WCF |
Fase SDL | Compilar |
Tecnologias aplicáveis | .NET Framework 3 |
Atributos | N/A |
Referências | MSDN, Reino Fortify |
Passos | Não impor um limite à utilização dos recursos do sistema pode resultar no esgotamento dos recursos e, em última análise, numa negação de serviço.
|
Exemplo
Segue-se um exemplo de configuração com a limitação ativada:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling maxConcurrentCalls="[YOUR SERVICE VALUE]" maxConcurrentSessions="[YOUR SERVICE VALUE]" maxConcurrentInstances="[YOUR SERVICE VALUE]" />
...
</system.serviceModel>
WCF-Divulgação de informações através de metadados
Título | Detalhes |
---|---|
Componente | WCF |
Fase SDL | Compilar |
Tecnologias aplicáveis | .NET Framework 3 |
Atributos | N/A |
Referências | MSDN, Reino Fortify |
Passos | Os metadados podem ajudar os atacantes a conhecer o sistema e a planear uma forma de ataque. Os serviços WCF podem ser configurados para expor metadados. Os metadados fornecem informações detalhadas sobre a descrição do serviço e não devem ser transmitidos em ambientes de produção. As HttpGetEnabled / HttpsGetEnabled propriedades da classe ServiceMetaData definem se um serviço irá expor os metadados |
Exemplo
O código abaixo instrui o WCF a transmitir os metadados de um serviço
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);
Não difunda metadados de serviço em um ambiente de produção. Defina as propriedades HttpGetEnabled / HttpsGetEnabled da classe ServiceMetaData como false.
Exemplo
O código abaixo instrui o WCF a não transmitir metadados de um serviço.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = false;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);