Curso Web Application Security in Java
24hVisão Geral
Seu aplicativo da Web escrito em Java funciona conforme o esperado, então pronto, certo? Mas você considerou alimentar valores incorretos? 16 GB de dados? Um nulo? Um apóstrofo? Números negativos, ou especificamente -1 ou -231? Porque é isso que os bandidos farão – e a lista está longe de estar completa. Lidar com a segurança requer um nível saudável de paranóia, e é isso que este curso oferece: um forte envolvimento emocional de muitos laboratórios práticos e histórias da vida real, tudo para melhorar substancialmente a higiene do código. Erros, consequências e melhores práticas são nosso sangue, suor e lágrimas.
Este Curso Web Application Security in Java cobre os problemas comuns de segurança de aplicativos da Web seguindo o OWASP Top Ten, mas vai muito além, tanto na cobertura quanto nos detalhes. Tudo isso é colocado no contexto de Java e ampliado por questões centrais de programação, discutindo as armadilhas de segurança da linguagem e estrutura Java.
Objetivo
Após concluir este Curso Web Application Security in Java, você será capaz de:
- Familiarizando-se com conceitos essenciais de segurança cibernética
- Noções básicas sobre problemas de segurança de aplicativos da Web
- Análise detalhada dos dez principais elementos do OWASP
- Colocando a segurança de aplicativos da Web no contexto de Java
- Indo além dos frutos mais fáceis de alcançar
- Gerenciando vulnerabilidades em componentes de terceiros
- Identifique vulnerabilidades e suas consequências
- Melhores práticas de segurança em Java
- Abordagens e princípios de validação de entrada
Publico Alvo
- Desenvolvedores Java trabalhando em aplicativos da Web
Pre-Requisitos
- Desenvolvimento geral em Java e Web
Materiais
Inglês/Português/Lab PraticoConteúdo Programatico
Cyber security basics
- What is security?
- Threat and risk
- Cyber security threat types
- Consequences of insecure software
The OWASP Top Ten - 1
- OWASP Top 10
- A1 - Injection
- Injection principles
- Injection attacks
- SQL injection
- SQL injection basics
- Attack techniques
- Content-based blind SQL injection
- Time-based blind SQL injection
- Input validation
- Parameterized queries
- Additional considerations
- Code injection
- OS command injection
- Using Runtime.exec()
- Using ProcessBuilder
- Script injection
- A2 - Broken Authentication
- Authentication basics
- Multi-factor authentication
- Authentication weaknesses - spoofing
- Spoofing on the Web
- Password management
- Inbound password management
- Storing account passwords
- Password in transit
- Dictionary attacks and brute forcing
- Salting
- Adaptive hash functions for password storage
- Password policy
- NIST authenticator requirements for memorized secrets
- The dictionary attack
- The ultimate crack
- Exploitation and the lessons learned
- Password database migration
- (Mis)handling null passwords
The OWASP Top Ten - 2
- A2 - Broken Authentication
- Session management
- Session management essentials
- Why do we protect session IDs - Session hijacking
- Session fixation
- Cross-site Request Forgery (CSRF)
- CSRF defense in depth
- Cookie security
- Cookie attributes
- A4 - XML External Entities (XXE)
- DTD and the entities
- Entity expansion
- External Entity Attack (XXE)
- File inclusion with external entities
- Server-Side Request Forgery with external entities
- Preventing XXE
- A5 - Broken Access Control
- Access control basics
- Failure to restrict URL access
- Confused deputy
- Insecure direct object reference (IDOR)
- Authorization bypass through user-controlled keys
- File upload
- Unrestricted file upload
- Good practices
- A7 - Cross-site Scripting (XSS)
- Cross-site scripting basics
- Cross-site scripting types
- Persistent cross-site scripting
- Reflected cross-site scripting
- Client-side (DOM-based) cross-site scripting
- Protection principles - escaping
- XSS protection APIs in Java
- XSS protection in JSP
- Additional protection layers
- Client-side protection principles
- A8 - Insecure Deserialization
- Serialization and deserialization challenges
- Deserializing untrusted streams
- Using ReadObject
- Sealed objects
- Look ahead deserialization
- Property Oriented Programming (POP)
- Creating payload
- A9 - Using Components with Known Vulnerabilities
- Using vulnerable components
- Assessing the environment
- Hardening
- Untrusted functionality import
- Importing JavaScript
- Vulnerability management
- Patch management
- Vulnerability databases
The OWASP Top Ten - 3
-
Web application security beyond the Top Ten
- Client-side security
- Same Origin Policy
- Tabnabbing
- Frame sandboxing
- Cross-Frame Scripting (XFS) attack
- Clickjacking beyond hijacking a click
Common software security weaknesses
- Input validation
- Input validation principles
- Blacklists and whitelists
- Data validation techniques
- What to validate - the attack surface
- Where to validate - defense in depth
- How to validate - validation vs transformations
- Output sanitization
- Encoding challenges
- Validation with regex
- Integer handling problems
- Representing signed numbers
- Integer visualization
- Integer overflow
- Signed / unsigned confusion in Java
- Integer truncation
- Upcasting
- Precondition testing
- Postcondition testing
- Using big integer libraries
- Integer handling in Java
- Files and streams
- Path traversal
- Path traversal-related examples
- Additional challenges in Windows
- Unsafe reflection
- Reflection without validation
- Unsafe native code
- Native code dependence
- Code quality
- Data handling
- Initialization and cleanup
- Constructors and destructors
- Class initialization cycles
- Unreleased resource
- Object oriented programming pitfalls
- Accessibility modifiers
- Are accessibility modifiers a security feature?
- Overriding and accessibility modifiers
- Inheritance and overriding
- Mutability
- Cloning