Visão Geral
Este Curso Java Development for Secure Systems foi projetado para fornecer aos alunos uma ampla gama de desafios e técnicas que compõem a “segurança Java”. A prática de codificação segura para Java incorpora técnicas para Java SE e Java EE, e cada vez mais os aplicativos EE estão usando técnicas SE, como arquivos de políticas e autenticação JAAS. Este curso passa algum tempo em cada plataforma, para que os alunos sejam expostos aos conceitos básicos de SE, como controlador de acesso, permissões e políticas; e também técnicas tradicionais de EE, como declarações de segurança da web e o modelo de autorização EJB. Os capítulos de práticas recomendadas encerram a cobertura de cada plataforma.
O curso enfatiza exercícios práticos e os alunos passarão mais da metade do tempo em sala de aula resolvendo problemas específicos de segurança. A maioria dos laboratórios são organizados como cenários nos quais é possível uma violação de segurança do software existente - os alunos começam hackeando o sistema de alguma forma. Em seguida, o trabalho do laboratório é reforçar o software para eliminar a ameaça: definir uma política segura, assinar um arquivo, limpar partes superexpostas de uma API, exigir login do usuário, etc
Conteúdo Programatico
Java SE Security
- Holistic Security Practices
- Threats to the User
- The Class Loader and Bytecode Verifier
- System Classes and the Core API
- SecurityManager and AccessController
- Permissions
- Implication
- CodeSources
- Policies
- Configuring Java SE Security
- Dynamic Policies
- Privileged Actions
Code Signature and Key Management
- Encryption and Digital Signature
- Keystores
- Keys and Certificates
- Certificate Authorities
- The KeyStore API
- Signing JARs
- Signed CodeSources
- Additional Policy Semantics
Secure Development Practices: Java SE
- Code Injection
- Final Classes and Methods
- Singletons, Factories, and Flyweights
- Methods, Collections, and Data Hiding
- Sealing JARs
- Code Obfuscation
- Object Serialization
Cryptography
- Threats to Identity and Privacy
- The Java Cryptography Extensions
- The Signature Class
- SignedObjects
- The Java Cryptography Extensions
- SecretKeys and KeyGenerator
- The Cipher Class
- Dangerous Practices
- HTTP and JSSE
JAAS
- Pluggable Authentication Logic
- JAAS
- Packages and Interfaces
- Subjects and Principals
- ANDs and ORs
- Impersonation Methods
- Permissions for JAAS Use
- LoginContext and LoginModule
- Configuring JAAS
- CallbackHandler and Callbacks
- Implementing a JAAS Client
- Implementing a LoginModule
Java EE Security
- Java EE Servers as Code Hosts
- Tomcat Security Configuration
- Declaring Roles
- Securing URLs
- HTTP Authentication Schemes
- Securing EJBs
- Programmatic Security
- JAAS in Java EE
- Realms and LoginModules
- JAAS in Tomcat
- JACC
- Certifying a Java EE Application
- HTTPS Configuration
Secure Development Practices: Java EE
- Presentation-Tier Vulnerabilities
- User Accounts
- MVC and Security
- Validating User Input
- SQL Injection
- Cross-Site Scripting
- Reflected XSS
- Defeating XSS
- OWASP
- Penetration Testing
- Error Handling and Information Leakage
- Logging and Auditing
- Appendix A: Learning Resources