Tópicos de segurança do ASP.NET Core

O ASP.NET Core permite que desenvolvedores configurem e gerenciem a segurança. A seguinte lista fornece links para tópicos de segurança:

Esses recursos de segurança permitem que você crie aplicativos ASP.NET Core robustos e seguros.

Para obter a cobertura de segurança Blazor, que adiciona ou sobrepõe as diretrizes neste nó, consulte autenticação e autorização ASP.NET Core Blazor e os outros artigos no nó Segurança e Identity do Blazor.

Recursos de segurança do ASP.NET Core

O ASP.NET Core fornece várias ferramentas e bibliotecas para proteger aplicativos ASP.NET Core, incluindo provedores de identity internos e serviços de identity de terceiros, como Facebook, Twitter e LinkedIn. O ASP.NET Core fornece várias abordagens para armazenar segredos de aplicativo.

Autenticação versus autorização

A autenticação é um processo em que um usuário fornece credenciais que são comparadas àquelas armazenadas em um sistema operacional, num banco de dados, no aplicativo ou no recurso. Se elas corresponderem, os usuários se autenticarão com êxito e, assim, poderão realizar ações para as quais são autorizados, durante um processo de autorização. A autorização é o processo que determina o que um usuário pode fazer.

Outra forma de pensar na autenticação é considerá-la como uma maneira de entrar em um espaço, como um servidor, um banco de dados, um aplicativo ou um recurso, ao passo que a autorização refere-se a quais ações o usuário poderá executar em que objetos dentro desse espaço (servidor, banco de dados ou aplicativo).

Vulnerabilidades comuns no software

O ASP.NET Core e o EF contêm recursos que ajudam a proteger seus aplicativos e impedir violações de segurança. A seguinte lista de links leva à documentação com detalhe de técnicas para evitar as vulnerabilidades de segurança mais comuns em aplicativos Web:

Há mais vulnerabilidades sobre as quais você deve estar atento. Para obter mais informações, veja os outros artigos na seção Segurança e Identity do sumário.

Fluxos de autenticação seguros

Recomendamos usar a opção de autenticação mais segura. Para os serviços do Azure, a autenticação mais segura são as identidades gerenciadas.

Evite conceder credenciais de senha do proprietário do recurso porque isso:

  • Expõe a senha do usuário ao cliente.
  • É um risco de segurança significativo.
  • Só deve ser usado quando outros fluxos de autenticação não forem possíveis.

As identidades gerenciadas são uma maneira segura de se autenticar em serviços sem a necessidade de armazenar credenciais em código, variáveis de ambiente ou arquivos de configuração. As identidades gerenciadas estão disponíveis para serviços do Azure e podem ser usadas com o SQL do Azure, o Armazenamento do Azure e outros serviços do Azure:

Quando o aplicativo é implantado em um servidor de teste, uma variável de ambiente pode ser usada para definir a cadeia de caracteres de conexão para um servidor de banco de dados de teste. Para obter mais informações, confira Configuração. Geralmente, as variáveis de ambiente são armazenadas em texto sem formatação e não criptografado. Se o computador ou o processo estiver comprometido, as variáveis de ambiente poderão ser acessadas por partes não confiáveis. Não recomendamos o uso de variáveis de ambiente para armazenar uma cadeia de conexão de produção, pois não é a abordagem mais segura.

Diretrizes de dados de configuração:

  • Nunca armazene senhas ou outros dados confidenciais no código do provedor de configuração ou nos arquivos de configuração de texto sem formatação. A ferramenta Gerenciador de Segredos pode ser usada para armazenar segredos em desenvolvimento.
  • Não use segredos de produção em ambientes de teste ou de desenvolvimento.
  • Especifique segredos fora do projeto para que eles não sejam acidentalmente comprometidos com um repositório de código-fonte.

Diretrizes de dados de configuração:

  • Nunca armazene senhas ou outros dados confidenciais no código do provedor de configuração ou nos arquivos de configuração de texto sem formatação. A ferramenta Gerenciador de Segredos pode ser usada para armazenar segredos em desenvolvimento.
  • Não use segredos de produção em ambientes de teste ou de desenvolvimento.
  • Especifique segredos fora do projeto para que eles não sejam acidentalmente comprometidos com um repositório de código-fonte.

Para saber mais, veja:

Para obter informações sobre outros provedores de nuvem, consulte:

Recursos adicionais