100 likes | 209 Views
Segurança em Aplicações 6. Melhores Práticas de Programação para Web. Márcio Aurélio Ribeiro Moreira marcio.moreira@pitagoras.com.br http:// si.lopesgazzani.br/docentes/marcio /. Princípios comuns. A segurança foi incorporada aos negócios Identifique as vulnerabilidades, ameaças e riscos
E N D
Segurança em Aplicações6. Melhores Práticas de Programação para Web Márcio Aurélio Ribeiro Moreira marcio.moreira@pitagoras.com.br 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
Vulnerabilidades x Plataformas Legenda: Fonte: P = Programar Java Web Application Security C = Configurar Best Practice Guide - Secologic for SAP
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
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
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
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
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
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
Materiais adicionais • Best Practices for Secure Web Development - Razvan Peteanu • Java Web Application Security - Best Practice Guide - Secologic for SAP