Visão Geral
Este Curso Securing Java Web Applications foi projetado para fornecer aos alunos a capacidade de proteger seus aplicativos e aplicar as melhores práticas em relação à codificação empresarial segura. Autenticação, autorização e validação de entrada são temas importantes, e os alunos obtêm uma boa exposição à criptografia Java básica para cenários de desenvolvimento específicos, bem como discussões completas sobre configuração HTTPS e gerenciamento de certificados, tratamento de erros, registro e auditoria.
Talvez as partes mais reveladoras do curso digam respeito a 'hacks' comuns da web ou vetores de ataque. Os alunos veem como é fácil deixar um aplicativo desprotegido contra cross-site scripting (XSS), falsificação de solicitação entre sites (CSRF), injeção de SQL e outros tipos de ataque - e aprendem que também é fácil corrigir essas vulnerabilidades e o importância de um processo de desenvolvimento seguro
Objetivo
Após a conclusão do Curso Securing Java Web Applications, os alunos serão capazes de:
- Desenvolva aplicativos Web Java seguros ou proteja aplicativos existentes refatorando conforme necessário.
- Defina restrições de segurança e configurações de login que instruem o contêiner da web a impor políticas de autenticação e autorização.
- Proteja-se contra ataques comuns da Web, incluindo XSS, CSRF e injeção de SQL.
- Valide a entrada do usuário de forma agressiva, para a integridade geral do aplicativo e especificamente para injeção de alumínio e ataques XSS.
- Configure um servidor e/ou aplicativo para usar HTTPS unidirecional ou bidirecional.
- Aplique criptografia em nível de aplicativo quando necessário.
- Armazene informações confidenciais com segurança, faça hash de senhas de usuários e entenda a importância do salting e do uso de algoritmos e processos de hash lentos para maximizar a segurança das credenciais armazenadas.
- Proteja arquivos de log e estabeleça trilhas de auditoria para informações ou ações especialmente confidenciais.
Pre-Requisitos
- Experiência em programação Java
- Experiência em programação de servlets
- Experiência em criação de páginas JSP é recomendada
Materiais
Português + Lab Pratico on premise vs cloud
Conteúdo Programatico
Concerns for Web Applications
- Threats and Attack Vectors
- Server, Network, and Browser Vulnerabilities
- Secure Design Principles
- GET vs. POST
- Container Authentication and Authorization
- HTML Forms
- Privacy Under /WEB-INF
- HTTP and HTTPS
- Other Cryptographic Practices
- SOA and Web Services
- The OWASP Top 10
Authentication and Authorization
- HTTP BASIC and DIGEST Authentication Schemes
- Declaring Security Constraints
- User Accounts
- Safeguarding Credentials in Transit
- Replay Attacks
- Authorization Over URL Patterns
- Roles
- FORM Authentication
- Login Form Design
- Session Fixation
- Protections
- Programmatic Security
- Programmatic Security in JSF
Common Web Attacks
- Forceful Browsing
- Predictable Resource Locations
- Using Random Numbers
- Cross-Site Scripting
- Output Escaping
- Cross-Site Request Forgery
- Synchronizer Tokens
- Injection Attacks
- Protections in JDBC and JPA
- Session Management
- Taking Care of Cookies
Input Validation
- Validating User Input
- Validation Practices
- Regular Expressions
- Bean Validation (a/k/a JSR-303)
- Constraint Annotations
- Cross-Field Validation
- Built-In Support in Java EE
- Using a Validator
- Producing Error Responses
- JSF Validation
HTTPS and Certificates
- Digital Cryptography
- Encryption
- SSL and Secure Key Exchange
- Hashing
- Signature
- Keystores
- keytool
- Why Keys Aren't Enough
- X.509 Certificates
- Certificate Authorities
- Obtaining a Signed Certificate
- Configuring HTTPS
- Client-Side Certificates and Two-Way SSL
- PKCS #12 and Trust Stores
- CLIENT-CERT Authentication
Application-Level Cryptography
- The Java Cryptography Architecture
- Secure Random Number Generation
- The KeyStore API
- Digital Signature
- Hashing
- Password Hashing
- Why Hashing Isn't Enough
- Salts
- Key Lengthening and Key Strengthening
- Slow Algorithms
- The Java Cryptography Extensions
- The SecretKey and KeyGenerator Types
- Symmetric Encryption
- Choosing Algorithms and Key Sizes
- Dangerous Practices
- Storing and Managing Keys
Secure Development Practices
- Secure Development Cycle
- Penetration Testing
- Secure Code Review
- Error Handling and Information Leakage
- Failing to a Secure Mode
- Designing for Failure
- Back Doors
- Logging Practices
- Appropriate Content for Logs
- Auditing Strategies
- Appendix A: Learning Resources
TENHO INTERESSE