• Online, Self-Paced
Course Description

Defensive Programming in iOS has to do with using coding practices and techniques to create apps that are reliable and resilient. This course will teach some methods and practices that can be used to help protect data inputted, stored, and retrieved by iOS apps.

Learning Objectives

Using Secure Interface Elements

  • start the course
  • obscure sensitive data from plain sight in an iOS app interface
  • use alert view styles to collect sensitive user data
  • obscure sensitive data when using alert controllers
  • use Touch ID authentication in iOS apps on supported devices

 

Protecting File Operations

  • recognize how to write text data to files while reducing the risk of data corruption
  • recognize how to write binary data to files while reducing the risk of data corruption

 

Using the Data Protection API

  • use built-in hardware encryption to store text files securely on disk
  • use built-in hardware encryption to store binary files securely on disk
  • register for notifications and delegate methods that indicate when protected files change status
  • create and access protected files while an iOS device is in the background

 

Using the iOS Keychain

  • securely store sensitive data using the iOS keychain
  • search and retrieve sensitive data from the iOS keychain
  • update sensitive data stored in the iOS keychain
  • remove sensitive data stored in the iOS keychain
  • define when keychain items are accessible depending on the lock status of an iOS device

 

Modules

  • use the Randomization Services API to generate random numbers
  • create an MD5 hash using the Common Crypto library
  • create an SHA hash using the Common Crypto library
  • use the RNCryptor library to encrypt and decrypt data in an iOS app
  • use the Certificate, Key, and Trust functions to generate an asymmetric key pair
  • use the public key of an asymmetric key pair to encrypt data
  • use the private key of an asymmetric key pair to decrypt data

 

Practice: Leveraging the iOS Keychain

  • create and manage iOS keychain items

 

Framework Connections