Segurança de desenvolvimento de software - Software development security

A segurança , como parte do processo de desenvolvimento de software , é um processo contínuo que envolve pessoas e práticas e garante a confidencialidade, integridade e disponibilidade do aplicativo. O software seguro é o resultado de processos de desenvolvimento de software com reconhecimento de segurança em que a segurança é integrada e, portanto, o software é desenvolvido com a segurança em mente.

A segurança é mais eficaz se planejada e gerenciada em todos os estágios do ciclo de vida de desenvolvimento de software (SDLC), especialmente em aplicativos críticos ou que processam informações confidenciais.

A solução para a segurança do desenvolvimento de software é mais do que apenas tecnologia.

Desafios de desenvolvimento de software

Conforme a tecnologia avança, os ambientes de aplicativos se tornam mais complexos e a segurança do desenvolvimento de aplicativos se torna mais desafiadora. Aplicativos, sistemas e redes estão constantemente sob vários ataques de segurança, como código malicioso ou negação de serviço . Alguns dos desafios do ponto de vista da segurança do desenvolvimento de aplicativos incluem vírus, cavalos de Tróia, bombas lógicas, worms, agentes e miniaplicativos.

Os aplicativos podem conter vulnerabilidades de segurança que podem ser introduzidas por engenheiros de software intencionalmente ou descuidadamente.

São necessários controles de software, ambientais e de hardware, embora não possam evitar problemas criados por práticas de programação inadequadas. O uso de verificações de limite e sequência para validar a entrada dos usuários melhorará a qualidade dos dados. Mesmo que os programadores possam seguir as melhores práticas, um aplicativo ainda pode falhar devido a condições imprevisíveis e, portanto, deve lidar com falhas inesperadas com sucesso, primeiro registrando todas as informações que pode capturar na preparação para a auditoria. À medida que a segurança aumenta, também aumentam o custo relativo e a sobrecarga administrativa.

Os aplicativos são normalmente desenvolvidos usando linguagens de programação de alto nível que, por si só, podem ter implicações de segurança. As principais atividades essenciais para o processo de desenvolvimento de software para produzir aplicativos e sistemas seguros incluem: definição conceitual, requisitos funcionais, especificação de controle, revisão de design, revisão de código e passo a passo, revisão de teste de sistema e gerenciamento de manutenção e mudança.

Construir software seguro não é responsabilidade apenas de um engenheiro de software, mas também das partes interessadas, que incluem: gerenciamento, gerentes de projeto, analistas de negócios, gerentes de garantia de qualidade, arquitetos técnicos, especialistas em segurança, proprietários de aplicativos e desenvolvedores.

Princípios básicos

Existem vários princípios básicos de orientação para a segurança de software . O conhecimento das partes interessadas sobre eles e como podem ser implementados no software é vital para a segurança do software. Esses incluem:

  • Proteção contra divulgação
  • Proteção contra alteração
  • Proteção contra destruição
  • Quem está fazendo o pedido
  • Quais direitos e privilégios o solicitante tem
  • Capacidade de construir evidências históricas
  • Gestão de configuração, sessões e erros / exceções

Práticas básicas

A seguir está uma lista de algumas das práticas de segurança da web recomendadas que são mais específicas para desenvolvedores de software.

  • Limpe as entradas no lado do cliente e no lado do servidor
  • Solicitação / resposta de codificação
  • Use HTTPS para entradas de domínio
  • Use apenas criptografia atual e algoritmos de hash
  • Não permitir listagem de diretório
  • Não armazene dados confidenciais dentro de cookies
  • Verifique a aleatoriedade da sessão
  • Definir sinalizadores seguros e HttpOnly em cookies
  • Use TLS, não SSL
  • Definir política de senha forte
  • Não armazene informações confidenciais nos campos ocultos de um formulário
  • Verifique a funcionalidade de upload de arquivo
  • Definir cabeçalhos de resposta segura
  • Certifique-se de que as bibliotecas de terceiros estão protegidas
  • Ocultar informações do servidor web

Teste de segurança

Os atributos comuns dos testes de segurança incluem autenticação, autorização, confidencialidade, disponibilidade, integridade, não repúdio e resiliência. O teste de segurança é essencial para garantir que o sistema evite que usuários não autorizados acessem seus recursos e dados. Alguns dados do aplicativo são enviados pela Internet, que trafega por uma série de servidores e dispositivos de rede. Isso dá muitas oportunidades para hackers sem escrúpulos.

Resumo

Todos os sistemas seguros implementam controles de segurança no software , hardware , sistemas e redes - cada componente ou processo tem uma camada de isolamento para proteger o recurso mais valioso de uma organização, que são seus dados. Existem vários controles de segurança que podem ser incorporados ao processo de desenvolvimento de um aplicativo para garantir a segurança e impedir o acesso não autorizado.

Referências