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
- Stewart, James (2012). CISSP Certified Information Systems Security Professional Study Guide Sexta edição. Canadá: John Wiley & Sons, Inc. pp. 275–319. ISBN 978-1-118-31417-3 .
- Relatório do Dagstuhl Seminar 12401Web Application Security Editado por Lieven Desmet, Martin Johns, Benjamin Livshits e Andrei Sabelfeld, http://research.microsoft.com/en-us/um/people/livshits/papers%5Ctr%5Cdagrep_s12401.pdf
- Web Application Security Consortium, The 80/20 Rule for Web Application Security de Jeremiah Grossman 2005, http://www.webappsec.org/projects/articles/013105.shtml
- Página de segurança de aplicativos da Web da Wikipedia, segurança de aplicativos da Web
- Página wiki Web Security, https://www.w3.org/Security/wiki/Main_Page
- Página de explorações de segurança da web da Wikipedia, categoria: explorações de segurança da web
- Open Web Application Security Project (OWASP), https://www.owasp.org/index.php/Main_Page
- Página de segurança de rede da Wikipedia, segurança de rede
- Site do Open Web Application Security Project (OWASP), https://www.owasp.org/images/8/83/Securing_Enterprise_Web_Applications_at_the_Source.pdf