ASP.NET Principais tópicos de segurança
ASP.NET Core permite que os desenvolvedores configurem e gerenciem a segurança. A lista a seguir fornece links para tópicos de segurança:
- Autenticação
- Autorização
- Proteção de Dados
- Imposição de HTTPS
- Armazenamento seguro de segredos de aplicativos em desenvolvimento
- de prevenção de XSRF/CSRF
- de compartilhamento de recursos entre origens (CORS)
- ataques XSS (Cross-Site Scripting)
Esses recursos de segurança permitem que você crie aplicativos ASP.NET Core robustos e seguros.
Para obter Blazor cobertura de segurança, que adiciona ou substitui as diretrizes neste nó, consulte Blazor de autenticação e autorização do Core e os outros artigos no nó Blazor do Identity.
ASP.NET Principais recursos de segurança
O ASP.NET Core fornece muitas ferramentas e bibliotecas para proteger aplicativos ASP.NET Core, como provedores de identidade integrados e serviços de identidade de terceiros, como Facebook, Twitter e LinkedIn. ASP.NET Core fornece várias abordagens para armazenar segredos de aplicativos.
Autenticação vs. Autorização
Autenticação é um processo em que um utilizador fornece credenciais que são comparadas às armazenadas em um sistema operativo, base de dados, aplicação ou recurso. Se corresponderem, os utilizadores são autenticados com êxito e podem executar ações para as quais estão autorizados, durante um processo de autorização. A autorização refere-se ao processo que determina o que um usuário pode fazer.
Outra maneira de pensar em autenticação é considerá-la como uma maneira de inserir um espaço, como um servidor, banco de dados, aplicativo ou recurso, enquanto a autorização é quais ações o usuário pode executar para quais objetos dentro desse espaço (servidor, banco de dados ou aplicativo).
Vulnerabilidades comuns no software
ASP.NET Core e EF contêm recursos que ajudam você a proteger seus aplicativos e evitar violações de segurança. A lista de links a seguir leva você à documentação detalhando técnicas para evitar as vulnerabilidades de segurança mais comuns em aplicativos Web:
- ataques XSS (Cross-Site Scripting)
- ataques de injeção de SQL
- ataques de falsificação de solicitação entre sites (XSRF/CSRF)
- Ataques de redirecionamento aberto
Há mais vulnerabilidades que você deve estar ciente. Para obter mais informações, consulte os outros artigos na seção Segurança e Identity do sumário.
Fluxos de autenticação seguros
Recomendamos o uso da opção de autenticação mais segura. Para os serviços do Azure, a autenticação mais segura é identidades gerenciadas.
Evite a concessão de credenciais de senha do proprietário do recurso porque:
- Expõe a senha do usuário para o cliente.
- É um risco de segurança significativo.
- Só deve ser usado quando outros fluxos de autenticação não são possíveis.
As identidades gerenciadas são uma maneira segura de autenticar 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 os serviços do Azure e podem ser usadas com o Azure SQL, o Armazenamento do Azure e outros serviços do Azure:
- Identidades Geridas no Microsoft Entra para Azure SQL
- identidades gerenciadas para o Serviço de Aplicativo e o Azure Functions
- Fluxos de autenticação segura
Quando o aplicativo é implantado em um servidor de teste, uma variável de ambiente pode ser usada para definir a cadeia de conexão para um servidor de banco de dados de teste. Para obter mais informações, consulte Configuration. As variáveis de ambiente geralmente são armazenadas em texto simples e não criptografado. Se a máquina ou o processo estiver comprometido, as variáveis de ambiente podem ser acessadas por partes não confiáveis. Recomendamos não usar 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 em arquivos de configuração de texto simples. A ferramenta Secret Manager pode ser usada para armazenar segredos em desenvolvimento.
- Não use segredos de produção em ambientes de desenvolvimento ou teste.
- Especifique segredos fora do projeto para que eles não possam ser acidentalmente comprometidos em um repositório de código-fonte.
Para mais informações, consulte:
- Recomendações de práticas recomendadas de identidade gerenciada
- Conectar-se do seu aplicativo a recursos sem necessidade de manipular credenciais no seu código
- serviços do Azure que podem usar identidades gerenciadas para acessar outros serviços
- de Melhores Práticas de Segurança IETF OAuth 2.0
Para obter informações sobre outros fornecedores de serviços de computação em nuvem, consulte:
- AWS (Amazon Web Services): AWS Key Management Service (KMS)
- Visão geral do Google Cloud Key Management Service
Padrões de aplicativos Web corporativos
Para obter orientação sobre como criar um aplicativo ASP.NET Core confiável, seguro, com desempenho, testável e escalável, consulte Padrões de aplicativos Web corporativos. Está disponível um aplicativo Web de exemplo completo com qualidade de produção que implementa os padrões.