Atualizações do Framework
Muitos desenvolvedores consideram que as estruturas e bibliotecas que usam para construir seu software são decididas principalmente por recursos ou preferências pessoais. No entanto, a estrutura escolhida é uma decisão importante, não apenas de uma perspetiva de design e funcionalidade, mas também de uma perspetiva de segurança . Escolher uma arquitetura com funcionalidades de segurança modernas e mantê-la atualizada é uma das melhores formas de garantir que as aplicações estão seguras.
Escolha a arquitetura cuidadosamente
O fator mais importante em matéria de segurança ao escolher uma arquitetura é quão bem suportada é. As melhores arquiteturas têm disposições de segurança estabelecidas e são suportadas por grandes comunidades que melhorar e testam a arquitetura. Nenhum software é 100% livre de problemas ou totalmente seguro, mas aquando da identificação de uma vulnerabilidade, pretendemos garantir que é fechado ou que é facultada rapidamente uma alternativa.
Muitas vezes "bem suportada" é sinónimo de "moderna". As arquiteturas mais antigas tendem a ser substituídas ou eventualmente perder popularidade. Mesmo se tiver uma experiência significativa ou muitas aplicações escritas numa arquitetura mais antiga, será melhor selecionar uma biblioteca moderna que tenha as funcionalidades necessárias. As estruturas modernas tendem a se basear nas lições aprendidas por iterações anteriores, o que torna a escolha delas para novos aplicativos uma forma de redução da superfície de ameaças. Você terá mais um aplicativo para se preocupar se uma vulnerabilidade for descoberta na estrutura mais antiga na qual seus aplicativos herdados são escritos.
Para obter mais informações sobre design seguro e redução da superfície de ameaças, consulte Microsoft Azure Well-Architected Framework - Security.
Mantenha a arquitetura atualizada
Frameworks de desenvolvimento de software (como Java Spring e .NET Core) lançam atualizações e novas versões regularmente. Estas atualizações incluem novas funcionalidades, remoção de funcionalidades antigas e, muitas vezes, correções e melhorias. Quando permitimos que nossas estruturas fiquem desatualizadas, isso cria "dívida técnica". Quanto mais desatualizado ficarmos, mais difícil e arriscado será trazer nosso código para a versão mais recente. Além disso, tal como a escolha da arquitetura inicial, permanecer as versões mais antigas da arquitetura dá margem para mais ameaças de segurança que foram corrigidas em versões mais recentes da arquitetura.
Como exemplo, de 2016 a 2017, mais de 30 vulnerabilidades foram encontradas na estrutura Apache Struts. A equipe de desenvolvimento rapidamente resolveu essas vulnerabilidades, mas algumas empresas não aplicaram os patches e pagaram o preço na forma de uma violação de dados. Certifique-se de que mantém as arquiteturas e bibliotecas atualizadas.
Como atualizo a minha arquitetura?
Algumas arquiteturas, como Java ou .NET, exigem uma instalação e tendem a lançar uma cadência conhecida. É boa ideia procurar novas versões e planear um ramo do código para o experimentar quando é lançado. Como exemplo, o .NET Core mantém uma página de notas de versão que você pode verificar para encontrar as versões mais recentes disponíveis.
Você pode atualizar bibliotecas mais especializadas, como estruturas JavaScript ou componentes .NET por meio de um gerenciador de pacotes. NPM e Webpack são escolhas populares para projetos Web e são suportados pela maioria dos IDEs ou ferramentas de compilação. Em .NET, utilizamos NuGet para gerir as nossas dependências de componentes. Assim como atualizar a estrutura principal, ramificar seu código, atualizar os componentes e testar é uma boa técnica para validar uma nova versão de uma dependência.
Nota
A dotnet
ferramenta de linha de comando tem uma add package
opção e remove package
para adicionar ou remover pacotes NuGet, mas não tem um comando correspondente update package
. No entanto, pode executar dotnet add package <package-name>
no seu projeto e irá atualizar automaticamente o pacote para a versão mais recente. Isto é uma forma fácil de atualizar dependências sem ter de abrir o IDE.
Aproveitar a segurança integrada
Verifique sempre as funcionalidades de segurança que as arquiteturas oferecem. Nunca implemente a segurança se houver uma técnica padrão ou funcionalidade integrada. Além disso, recorra a algoritmos e fluxos de trabalho comprovados, pois foram muitas vezes escrutinados por vários especialistas, criticados e reforçados para que possa ter a certeza de que são fiáveis e seguros.
A estrutura .NET Core tem inúmeros recursos de segurança. Aqui estão alguns pontos de partida principais na documentação:
- Autenticação - Gerenciamento de Identidades
- Autorização
- Proteção de Dados
- Configuração Segura
- APIs de Extensibilidade de Segurança
Cada um desses recursos foi escrito por especialistas em sua área, em seguida, batidos com testes para garantir que eles funcionam como pretendido, e apenas como pretendido. Outros frameworks oferecem recursos semelhantes; Verifique com o fornecedor que fornece a estrutura para descobrir o que eles têm em cada categoria.
Aviso
Escrever seus próprios controles de segurança, em vez de usar aqueles fornecidos pela sua estrutura, não é apenas uma perda de tempo, é menos seguro.
Microsoft Defender para a Cloud
Ao usar o Azure para hospedar seus aplicativos Web, o Defender for Cloud avisará se suas estruturas estiverem desatualizadas como parte da guia de recomendações. Não se esqueça de procurar lá de vez em quando para ver se há algum aviso relacionado aos seus aplicativos.
Resumo
Sempre que possível, escolha uma arquitetura moderna para criar as suas aplicações, utilize sempre as funcionalidades de segurança integradas e certifique-se de que a mantém atualizada. Estas regras simples ajudam a garantir que a aplicação começa numa base sólida.