Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, apresentamos atividades de segurança e controles a serem considerados ao desenvolver aplicativos para a nuvem. Perguntas e conceitos de segurança a serem considerados durante as fases de implementação e verificação do SDL (Ciclo de Vida de Desenvolvimento de Segurança da Microsoft) são abordados. O objetivo é ajudá-lo a definir atividades e serviços do Azure que você pode usar para desenvolver um aplicativo mais seguro.
As seguintes fases do SDL são abordadas neste artigo:
- Implementation
- Verification
Implementation
O foco da fase de implementação é estabelecer as melhores práticas de prevenção precoce e detectar e remover problemas de segurança do código. Suponha que seu aplicativo seja usado de maneiras que você não pretendia que ele fosse usado. Isso ajuda você a se proteger contra o uso indevido acidental ou intencional de seu aplicativo.
Executar revisões de código
Antes de integrar o código, realize revisões de código para aumentar a qualidade geral do código e reduzir o risco de criar bugs. You can use Visual Studio to manage the code review process.
Executar análise de código estático
A análise de código estático (também conhecida como análise de código-fonte) é executada como parte de uma revisão de código. A análise de código estático geralmente se refere à execução de ferramentas de análise de código estático para encontrar possíveis vulnerabilidades no código de não execução. Static code analysis uses techniques like taint checking and data flow analysis.
Azure Marketplace offers developer tools that perform static code analysis and assist with code reviews.
Validar e sanitizar cada entrada para seu aplicativo
Trate todas as entradas como não confiáveis para proteger seu aplicativo contra as vulnerabilidades mais comuns do aplicativo Web. Dados não confiáveis são um veículo para ataques de injeção. A entrada para seu aplicativo inclui parâmetros na URL, entrada do usuário, dados do banco de dados ou de uma API e qualquer coisa passada em que um usuário poderia potencialmente manipular. An application should validate that data is syntactically and semantically valid before the application uses the data in any way (including displaying it back to the user).
Valide a entrada no início do fluxo de dados para garantir que apenas dados corretamente formatados entrem no fluxo de trabalho. Você não deseja que dados malformados persistam no banco de dados ou disparem um mau funcionamento em um componente downstream.
A lista de bloqueios e a lista de permissões são duas abordagens gerais para executar a validação da sintaxe de entrada:
A lista de bloqueio tenta verificar se uma determinada entrada de usuário não contém conteúdo "conhecido por ser mal-intencionado".
Tentativas da lista de permitidos de verificar se determinada entrada do usuário corresponde a um conjunto de entradas "conhecidas como boas". A lista de permissões baseada em caracteres é uma forma de lista de permissões em que um aplicativo verifica se a entrada do usuário contém apenas caracteres "bons conhecidos" ou que a entrada corresponde a um formato conhecido.
Por exemplo, isso pode envolver a verificação de que um nome de usuário contém apenas caracteres alfanuméricos ou que ele contém exatamente dois números.
A lista de permissões é a abordagem preferencial para a criação de software seguro. A lista de bloqueios é propensa a erros porque é impossível pensar em uma lista completa de entradas potencialmente ruins.
Faça isso funcionar no servidor, não no lado do cliente (ou no servidor e no lado do cliente).
Verificar as saídas do aplicativo
Qualquer saída que você apresente visualmente ou dentro de um documento sempre deve ser codificada e com escape. Escaping, also known as output encoding, is used to help ensure that untrusted data isn't a vehicle for an injection attack. O escape, combinado com a validação de dados, fornece defesas em camadas para aumentar a segurança do sistema como um todo.
Escaping makes sure that everything is displayed as output. Escaping also lets the interpreter know that the data isn't intended to be executed, and this prevents attacks from working. This is another common attack technique called cross-site scripting (XSS).
Se você estiver usando uma estrutura da Web de terceiros, poderá verificar suas opções de codificação de saída em sites usando a folha de referências de prevenção de OWASP XSS.
Usar consultas parametrizadas quando entrar em contato com o banco de dados
Nunca crie uma consulta de banco de dados embutida "em tempo real" em seu código e envie-a diretamente para o banco de dados. O código mal-intencionado inserido em seu aplicativo pode potencialmente fazer com que o banco de dados seja roubado, apagado ou modificado. Seu aplicativo também pode ser usado para executar comandos mal-intencionados do sistema operacional que hospeda seu banco de dados.
Em vez disso, use consultas parametrizadas ou procedimentos armazenados. Ao usar consultas parametrizadas, você pode invocar o procedimento de seu código com segurança e passá-lo em uma cadeia de caracteres sem se preocupar que ele será tratado como parte da instrução de consulta.
Remover cabeçalhos de servidor padrão
Cabeçalhos como Server, X-Powered-By e X-AspNet-Version revelam informações sobre o servidor e as tecnologias subjacentes. Recomendamos suprimir esses cabeçalhos para evitar a impressão digital do aplicativo. Consulte a remoção de cabeçalhos de servidor padrão em sites do Azure.
Segregar seus dados de produção
Seus dados de produção ou dados "reais" não devem ser usados para desenvolvimento, teste ou qualquer outra finalidade que não seja o que a empresa pretendia. A masked (anonymized) dataset should be used for all development and testing.
Isso significa que menos pessoas têm acesso aos seus dados reais, o que reduz sua superfície de ataque. Isso também significa que menos funcionários veem dados pessoais, o que elimina uma possível violação de confidencialidade.
Implementar uma política de senha forte
Para se defender contra a força bruta e a adivinhação baseada em dicionário, você deve implementar uma política de senha forte para garantir que os usuários criem uma senha complexa (por exemplo, comprimento mínimo de 12 caracteres e que exija caracteres alfanuméricos e especiais).
A ID externa do Microsoft Entra nos locatários externos ajuda no gerenciamento de senhas, fornecendo redefinição de senha self-service e muito mais.
Para se defender contra ataques em contas padrão, verifique se todas as chaves e senhas são substituíveis e se elas são geradas ou substituídas após a instalação dos recursos.
Se o aplicativo precisar gerar senhas automaticamente, verifique se as senhas geradas são aleatórias e se elas têm alta entropia.
Validar envios de arquivo
If your application allows file uploads, consider precautions that you can take for this risky activity. A primeira etapa em muitos ataques é colocar algum código mal-intencionado em um sistema que está sob ataque. Usar um upload de arquivo ajuda o invasor a fazer isso. O OWASP oferece soluções para validar um arquivo para garantir que o arquivo que você está carregando seja seguro.
A proteção antimalware ajuda a identificar e remover vírus, spyware e outros softwares mal-intencionados. You can install Microsoft Antimalware or a Microsoft partner's endpoint protection solution (Trend Micro, Broadcom, McAfee, Microsoft Defender Antivirus in Windows, and Endpoint Protection).
Microsoft Antimalware includes features like real-time protection, scheduled scanning, malware remediation, signature updates, engine updates, samples reporting, and exclusion event collection. Você pode integrar o Microsoft Antimalware e soluções de parceiros ao Microsoft Defender para Nuvem a fim de facilitar a implantação e as detecções internas (alertas e incidentes).
Não armazenar conteúdo confidencial em cache
Não armazene conteúdo confidencial em cache no navegador. Os navegadores podem armazenar informações para cache e histórico. Os arquivos armazenados em cache são armazenados em uma pasta como a pasta Arquivos temporários da Internet, no caso do Internet Explorer. Quando essas páginas são referenciadas novamente, o navegador exibe as páginas de seu cache. If sensitive information (address, credit card details, Social security number, username) is displayed to the user, the information might be stored in the browser's cache and be retrievable by examining the browser's cache or by pressing the browser's Back button.
Verification
A fase de verificação envolve um esforço abrangente para garantir que o código atenda aos princípios de segurança e privacidade estabelecidos nas fases anteriores.
Localizar e corrigir vulnerabilidades em suas dependências de aplicativo
Você examina seu aplicativo e suas bibliotecas dependentes para identificar todos os componentes vulneráveis conhecidos. Os produtos disponíveis para executar essa verificação incluem OWASP Dependency Check, Snyk e Black Duck.
Testar seu aplicativo em um estado operacional
O DAST (teste dinâmico de segurança de aplicativo) é um processo de teste de um aplicativo em um estado operacional para encontrar vulnerabilidades de segurança. As ferramentas DAST analisam programas enquanto estão em execução para encontrar vulnerabilidades de segurança, como corrupção de memória, configuração de servidor insegura, scripts entre sites, problemas de privilégio do usuário, injeção de SQL e outras preocupações críticas de segurança.
O DAST é diferente do SAST (teste de segurança de aplicativo estático). As ferramentas SAST analisam o código-fonte ou as versões compiladas do código quando o código não está em execução para encontrar falhas de segurança.
Perform DAST, preferably with the assistance of a security professional (a penetration tester or vulnerability assessor). Se um profissional de segurança não estiver disponível, você poderá executar o DAST por conta própria com um verificador de proxy web e algum treinamento. Conecte um scanner DAST no início para garantir que você não introduza problemas de segurança óbvios em seu código. See the OWASP site for a list of web application vulnerability scanners.
Fazer teste de fuzzing
In fuzz testing, you induce program failure by deliberately introducing malformed or random data to an application. Induzir falha no programa ajuda a revelar possíveis problemas de segurança antes que o aplicativo seja lançado.
A Detecção de Risco de Segurança é o serviço de teste de fuzz exclusivo da Microsoft para localizar bugs críticos de segurança no software.
Realizar revisão da superfície de ataque
Examinar a superfície de ataque após a conclusão do código ajuda a garantir que qualquer alteração de design ou implementação em um aplicativo ou sistema tenha sido considerada. Isso ajuda a garantir que todos os novos vetores de ataque criados como resultado das alterações, incluindo modelos de ameaça, tenham sido revisados e mitigados.
Você pode criar uma imagem da superfície de ataque verificando o aplicativo. A Microsoft oferece uma ferramenta de análise de superfície de ataque chamada Attack Surface Analyzer. Você pode escolher entre muitos serviços ou ferramentas de verificação de vulnerabilidades e testes dinâmicos comerciais, incluindo OWASP Attack Surface Detector, Arachni e w3af. Essas ferramentas de verificação rastreiam seu aplicativo e mapeiam as partes do aplicativo que são acessíveis pela Web. You can also search the Azure Marketplace for similar developer tools.
Executar testes de penetração de segurança
Garantir que seu aplicativo esteja seguro é tão importante quanto testar qualquer outra funcionalidade. Make penetration testing a standard part of the build and deployment process. Agende testes de segurança regulares e verificação de vulnerabilidades em aplicativos implantados e monitore portas abertas, pontos de extremidade e ataques.
Executar testes de verificação de segurança
A AzTS (Solução de Segurança do Locatário do Azure) do AzSK (Secure DevOps Kit para Azure) contém SVTs para vários serviços da plataforma Azure. Execute esses SVTs periodicamente para garantir que sua assinatura do Azure e os diferentes recursos que compõem seu aplicativo estejam em um estado seguro. Você também pode automatizar esses testes usando o recurso de extensões de CI/CD (integração contínua/implantação contínua) do AzSK, que disponibiliza SVTs como uma extensão do Visual Studio.
Next steps
Nos artigos a seguir, recomendamos controles de segurança e atividades que podem ajudá-lo a projetar e implantar aplicativos seguros.