Introduction
Welcome to secure coding in iOS
()
1. 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
()
iOS security overview, part 1
()
iOS security overview, part 2
()
Swift secure app development overview, part 1
()
Swift secure app development overview, part 2
()
iOS general development best practices
()
2. Input Validation
Understanding input risks
()
Autocorrect and autofill
()
Activity: Disabling autocorrection
()
Special characters, part 1
()
Special characters, part 2
()
Format string attack, part 1
()
Format string attack, part 2
()
Format string attack, part 3
()
Activity: Playing with format strings
()
Input sanitization
()
Input sanitization techniques: Regular expressions, part 1
()
Input sanitization techniques: Regular expressions, part 2
()
Activity: Regular expressions, part 1
()
Activity: Regular expressions, part 2
()
Activity: Regular expressions, part 3
()
Activity: Sanitizing input, part 1
()
Activity: Sanitizing input, part 2
()
Property wrappers
()
Activity: Trimming whitespace and newlines with a property wrapper
()
Activity: Value clamping with a property wrapper
()
Activity: Sanitizing input with a property wrapper
()
Null bytes
()
Cross-site attacks
()
Activity: Exploring XSS attacks
()
Code injection
()
Activity: Filtering a malicious QR code, part 1
()
Activity: Filtering a malicious QR code, part 2
()
SQL injection, part 1
()
SQL injection, part 2
()
Object deserialization
()
Activity: Installing Alamofire and SwiftyJSON pods
()
Activity: Securely working with JSON, part 1
()
Activity: Securely working with JSON, part 2
()
WebView protection
()
Activity: Protecting users against insecure UIWebView
()
3. Memory Corruption
iOS memory overview
()
Swift pointers
()
Understanding overflows
()
Activity: Creating a buffer overflow
()
4. Encryption
iOS storage overview
()
Activity: Exploring the iOS file system
()
Activity: Preparing for encryption
()
Core Data
()
Data persistence, part 1
()
Data persistence, part 2
()
Activity: Saving a username and password
()
Activity: Verifying a username and password, part 1
()
Activity: Verifying a username and password, part 2
()
Encryption overview, part 1
()
Encryption overview, part 2
()
Keychain
()
Activity: Preparing to use Keychain
()
Activity: Save user secrets in Keychain
()
Hashing
()
Activity: Generating random values
()
Activity: Hashing passwords
()
Activity: Adding salt to a password hash
()
5. Protecting Data
Common data risks, part 1
()
Common data risks, part 2
()
Protecting files, part 1
()
Protecting files, part 2
()
Activity: Saving data in a Realm database
()
Network security
()
Activity: Making an HTTP exception
()
App backgrounding
()
Activity: Securely backgrounding an app
()
API security
()
Activity: Storing an API key in Keychain
()
Interprocess communications (IPC), part 1
()
Interprocess communications (IPC), part 2
()
Activity: Preventing race conditions
()
6. Access Control
Apple ID
()
Activity: Sign in with Apple ID
()
Biometrics
()
Activity: Logging in with biometrics
()
Authorization
()
Activity: Role-based access control
()
One-time passwords
()
Activity: Using a one-time password
()
7. Protecting Software and System Integrity
Understanding risks associated with external code
()
Activity: Working with external code
()
Error handling
()
Activity: Handling errors
()
Logging, part 1
()
Logging, part 2
()
Logging, part 3
()
Testing types
()
Jailbreak detection
()
Activity: Detecting a jailbroken device
()
New vulnerability research
()
Secure iOS coding roundup
()
Ex_Files_Writing_Code_Infosec.zip
(747.2 MB)