Especialização em Segurança da Informação Segurança em Aplicações 6. Melhores Práticas de Programação para Web Márcio Aurélio Ribeiro Moreira [email protected] http://si.lopesgazzani.br/docentes/marcio/ Princípios comuns A segurança foi incorporada aos negócios Identifique as vulnerabilidades, ameaças e riscos A segurança deve ser parte dos requisitos Identifique os ativos, as mudanças nos casos de uso, os usuários, os papéis e responsabilidades Identifique as exigências legais A segurança dever ser parte da arquitetura A arquitetura deve ser avaliada sob a ótica de segurança, guiadas pelos requisitos de segurança Márcio Moreira 5. Melhores Práticas de Programação para Web – slide 2 Segurança em Aplicações Vulnerabilidades x Plataformas Categoria Java J2EE Risco Pacote Injeção de código P P médio java.* Segurança de Cookies P P alto javax.servlet.* Cross site scripts (xss) P P alto javax.servlet.* Descoberta de informações P P médio java.* Erros de lógica P P médio java.* Injeção de recursos P C alto javax.servlet.* Injeção de código SQL C C alto java.sql.* Não liberação de recursos C C baixo java.* Legenda: P = Programar C = Configurar Márcio Moreira Fonte: Java Web Application Security Best Practice Guide - Secologic for SAP 5. Melhores Práticas de Programação para Web – slide 3 Segurança em Aplicações Recomendações Restrinja ao máximo o anonimato Onde for recomendável use autenticação No restante pelo menos trabalhe com identificação Limite o uso de credenciais administrativas Prefira o uso de credenciais do usuário ao invés de credenciais administrativas para acesso ao DB Ainda assim proteja o acesso ao DB por ACL Prefira formulários com o método POST Evite ao máximo o uso do método GET Márcio Moreira 5. Melhores Práticas de Programação para Web – slide 4 Segurança em Aplicações Recomendações Não envie dados ocultos ao cliente Não coloque dados para ir e voltar do client Os dados, mesmo ocultos, podem ser alterados facilmente no client Alertas: http://xforce.iss.net/alerts/advise42.php Não armazene dados em páginas (asp/jsp) Credenciais de acesso a DB, diretórios, etc. podem ser facilmente vistas nas páginas geradas Atenção para comentários html em produção Márcio Moreira 5. Melhores Práticas de Programação para Web – slide 5 Segurança em Aplicações Recomendações Cuidado com scripts através do site (xss) Leia www.cert.org/advisories/CA-2000-02.html Cuidado com informações entradas, vistas e alteradas somente por usuários O administrador não tem ação sobre elas e os usuários podem ficar relativamente anônimos Cuidado com códigos gerados por wizards Assistentes são ótimos para usuários Mas, são prato cheio para os hackers, pois dizem muito sobre a codificação das páginas Márcio Moreira 5. Melhores Práticas de Programação para Web – slide 6 Segurança em Aplicações Recomendações Segurança dos middlewares Aplicações componentizadas (usam COM+ ou EJB) geram uma camada a mais de segurança A arquitetura deve considerar uso de credenciais para a camada de middleware Segurança declarativa x programativa A segurança declarativa é usada quando a segurança está fora da aplicação Na programativa a segurança está descrita no código A decisão deve ser tomada a cada aplicação Márcio Moreira 5. Melhores Práticas de Programação para Web – slide 7 Segurança em Aplicações Recomendações Uma PKI (infraestrutura de chave pública) não é uma “bala de prata” Certificados são fáceis de gerar e difíceis de checar Leia: www.counterpane.com/pki-risks.html Não presuma nada (plandocheckact) O mundo real é perigoso e traiçoeiro Implementações top de linha duram pouco tempo Nossa grande amiga: revisão de código Márcio Moreira 5. Melhores Práticas de Programação para Web – slide 8 Segurança em Aplicações Recomendações Inspecione o que estamos utilizando A segurança do todo depende das partes Os componentes, SO, bibliotecas, etc. que você está usando tem vulnerabilidades? Use os logs para resolver problemas Na suspeita de um ataque salve os logs Comece a investigação por eles Márcio Moreira 5. Melhores Práticas de Programação para Web – slide 9 Segurança em Aplicações Materiais adicionais Best Practices for Secure Web Development - Razvan Peteanu Java Web Application Security - Best Practice Guide - Secologic for SAP Márcio Moreira 5. Melhores Práticas de Programação para Web – slide 10 Segurança em Aplicações