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:
- Autenticação
- Autorização
- Proteção de dados
- Imposição de HTTPS
- Armazenamento seguro dos segredos do aplicativo no desenvolvimento
- Prevenção de XSRF/CSRF
- CORS (compartilhamento de recursos entre origens)
- Ataques de XSS (cross-site scripting)
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:
- Ataques de XSS (cross-site scripting)
- Ataques de injeção de SQL
- Ataques de XSRF/CSRF (solicitações intersite forjadas)
- Ataques de redirecionamento aberto
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:
- Identidades gerenciadas no Microsoft Entra para o SQL do Azure
- Identidades gerenciadas para o Serviço de Aplicativo e o Azure Functions
- Fluxos de autenticação seguros
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. Recomendamos que as variáveis de ambiente não sejam usadas para armazenar uma cadeia de conexão de produção, pois não é a abordagem mais segura.
Para saber mais, veja:
- Recomendações de práticas recomendadas de identity gerenciadas
- Conectar-se do aplicativo a recursos sem manipular credenciais no código
- Serviços do Azure que podem usar identidades gerenciadas para acessar outros serviços
- Melhores práticas atuais de segurança do IETF OAuth 2.0
Para obter informações sobre outros provedores de nuvem, consulte:
- AWS (Amazon Web Services): AWS Key Management Service (KMS)
- Visão geral do serviço de gerenciamento de chaves do Google Cloud
Recursos adicionais
- Introdução ao Identity no ASP.NET Core
- Habilitar a geração de código QR para aplicativos de autenticador TOTP no ASP.NET Core
- Autenticação do Facebook e do Google no ASP.NET Core
- Soluções de gerenciamento de para aplicativos Web do .NETIdentity