Introduction to Secure Coding
The need for secure coding
()
Activity: OWASP Top 10 mobile vulnerabilities, part 1
()
Activity: OWASP Top 10 mobile vulnerabilities, part 2
()
Activity: OWASP Top 10 mobile vulnerabilities, part 3
()
Android security overview
()
Activity: Researching Android vulnerabilities
()
Kotlin secure app development overview
()
Beginner bonus
()
Activity: Creating a simple app – Hello
()
Activity: Creating a simple app – Greeting
()
Activity: Creating a simple app – Sales tax calculator
()
Activity: Creating a simple app – Sales tax calculator, part 2
()
Activity: Creating a simple app – Two activities
()
Activity: Creating a simple app – Two activities, part 2
()
Activity: Creating a simple app – Two activities calculator
()
Activity: Creating a simple app – Two activities calculator, part 2
()
1. Input Validation
Understanding input risks
()
Autocompletion, part 1
()
Autocompletion, part 2
()
Activity: Securing autocomplete
()
Special characters, part 1
()
Special characters, part 2
()
Activity: Using special characters
()
Null safety, part 1
()
Null safety, part 2: Safe call operator
()
Null safety, part 3: Not-null operator
()
Null safety, part 4: Elvis operator
()
Null safety, part 5: Safe cast and unsafe cast operators
()
Null safety, part 6: Smart cast
()
Activity: Implementing null safety, part 1
()
Activity: Implementing null safety, part 2
()
Activity: Implementing null safety, part 3
()
String interpolation
()
Activity: Understanding string interpolation
()
Format string attacks
()
Regular expressions, part 1
()
Regular expressions, part 2
()
Activity: Working with regular expressions in Kotlin, part 1
()
Activity: Working with regular expressions in Kotlin, part 2
()
Activity: Validating input with regular expressions in Kotlin, part 3
()
Input sanitization
()
Activity: Sanitizing input
()
Activity: Clamping input to a range
()
Kotlin filter and trim
()
Activity: Filtering and trimming
()
Cross-site attacks
()
Activity: Exploring cross-site scripting
()
Cross-app scripting
()
Activity: Defending against cross-app scripting
()
Code tampering and injection, part 1
()
Code tampering and injection, part 2
()
Code tampering and injection, part 3
()
Activity: Filtering a malicious QR code, part 1
()
Activity: Filtering a malicious QR code, part 2
()
SQL injection
()
SQL stored procedures
()
Object deserialization, part 1
()
Object deserialization, part 2
()
Activity: Protecting JSON with an API key, part 1
()
Activity: Protecting JSON with an API key, part 2
()
Form validation, part 1
()
Form validation, part 2
()
Form validation, part 3
()
Activity: Validating form input, part 1
()
Activity: Validating form input, part 2
()
WebView vulnerabilities, part 1
()
WebView vulnerabilities, part 2
()
Activity: Securing Android WebView
()
2. Memory Corruption
Android memory overview
()
Understanding pointers
()
Understanding overflows
()
Activity: Managing overflows
()
3. Encryption
Android storage overview
()
Protecting secrets
()
Activity: Insecurely saving a username and password
()
Encryption overview
()
Understanding PKI
()
Android encryption overview
()
Activity: Encrypting data, part 1
()
Activity: Encrypting data, part 2
()
Activity: Encrypting data, part 3
()
Hashing
()
Activity: Hashing a password
()
Activity: Generating random values
()
Activity: Salting a hashed password
()
Android Keystore
()
Activity: Securely storing secrets in Android Keystore
()
4. Protecting Data
Common data risks
()
Android file recovery
()
Data in transit
()
Activity: Sniffing clear text transmissions, part 1
()
Activity: Sniffing clear text transmissions, part 2
()
Network security
()
Activity: Configuring network security, part 1
()
Activity: Configuring network security, part 2
()
Certificate pinning
()
Activity: Certificate pinning
()
Data leakage, part 1
()
Data leakage, part 2
()
Activity: Preventing data leakage
()
Databases
()
Activity: Working with Room database, part 1
()
Activity: Working with Room database, part 2
()
Activity: Securing database data
()
Android IPC, part 1
()
Android IPC, part 2: Activity
()
Android IPC, part 3: Service
()
Android IPC, part 4: Broadcast receiver
()
Android IPC, part 4: Broadcast receiver, continued
()
Android IPC, part 5: Content provider
()
Android IPC, part 5: Content provider, continued
()
Android IPC, part 6: Intent
()
Android IPC, part 6: Intent, continued
()
Android IPC, part 7: Binder
()
Android IPC, part 8: Threads
()
Android IPC, part 9: Race condition
()
Activity: Exploring threads and concurrency
()
5. Access Control
Authentication, part 1
()
Authentication, part 2
()
Activity: Implementing a password checker, part 1
()
Activity: Implementing a password checker, part 2
()
Google sign-in
()
Activity: Signing in with Google and Facebook
()
Keys, tokens, and secrets
()
Biometrics
()
Activity: Implementing biometrics
()
Two-factor authentication
()
Authorization, part 1
()
Authorization, part 2
()
Authorization, part 3
()
Activity: Implementing runtime permissions
()
Activity: Role-based access control
()
OAuth
()
Insecure direct object reference
()
Session management, part 1
()
Session management, part 2
()
Activity: Implementing session management
()
6. Protecting Software and System Integrity
System integrity
()
Application integrity
()
Understanding risks of embedding third-party code
()
Activity: Working with external code
()
Exception handling, part 1
()
Exception handling, part 2
()
Printing and logging, part 1
()
Printing and logging, part 2
()
Activity: Handling exceptions, logging and printing, part 1
()
Activity: Handling exceptions, logging and printing, part 2
()
Testing types, part 1
()
Testing types, part 2
()
Tamper protection
()
Activity: Reverse engineering an Android app
()
Root detection
()
Social engineering
()
New vulnerability research
()
Secure Android coding roundup
()
Conclusion
Final thoughts
()