# Guideline 1.6 - Safety: Insecure Data Handling

**Guideline:** 1.6 · **Store:** Apple App Store · **Severity:** medium · **Fix difficulty:** medium · **Typical turnaround:** 2-8 hours

Canonical URL: https://appstorereject.com/rejections/apple/1/guideline-16-safety-insecure-data-handling

## Description

Apple is rejecting your app because it doesn't implement appropriate security measures for handling user information. This covers transmitting sensitive data over unencrypted connections (HTTP instead of HTTPS), storing credentials in plain text, lacking App Transport Security compliance, or having known security vulnerabilities. This rejection is less common as a standalone reason (most apps use HTTPS by default now), but it still appears when apps communicate with legacy backend services over HTTP, store sensitive data in UserDefaults or plain-text files, or include SDKs with known vulnerabilities. App Transport Security (ATS) is enforced by default in iOS — if your app needs to communicate over HTTP, you must add ATS exceptions in your Info.plist, and Apple may question those exceptions during review.

## Common variations

- App transmits user data over an unencrypted HTTP connection
- App stores passwords or sensitive data in plain text
- App Transport Security exceptions used without justification
- App includes SDK with known security vulnerabilities
- Sensitive user information not properly protected

## Example rejection email

```
Guideline 1.6 - Safety - Data Security

Your app does not implement appropriate security measures to ensure the proper handling of user information. Specifically, your app [transmits user data over an unencrypted connection / stores sensitive information insecurely / includes known security vulnerabilities].

Next Steps:
Please implement appropriate security measures to protect user data, including using HTTPS for all network communications and securing stored user information.
```

## Resolution steps

## Quick Assessment
- **Risk level:** Medium
- **Resolution path:** Fix & Resubmit
- **Typical turnaround:** 2-8 hours

## The Fix

01. **Migrate to HTTPS** — Ensure all network requests use HTTPS. Update any hardcoded HTTP URLs to HTTPS. If your backend doesn't support HTTPS, that's the first priority.

02. **Remove ATS exceptions** — Review your Info.plist for `NSAllowsArbitraryLoads` or domain-specific ATS exceptions. Remove any that aren't absolutely necessary and document the remaining ones in Review Notes.

03. **Secure stored data** — Move sensitive data from UserDefaults, plain-text files, or SQLite to the iOS Keychain. Use encryption for any local data storage containing PII.

04. **Update vulnerable SDKs** — Check for known vulnerabilities in your dependencies and update to patched versions.

05. **Audit data handling** — Review all points where user data is collected, transmitted, or stored. Ensure each point uses appropriate security measures.

## Prevention
- Use HTTPS everywhere with no exceptions
- Store sensitive data in the iOS Keychain, not UserDefaults
- Keep all SDKs and dependencies up to date
- Run security audits before submission

## Before / after examples

**Before:** App sends login credentials to backend API over HTTP and stores auth token in UserDefaults
**After:** All API calls use HTTPS with certificate pinning, auth token stored in iOS Keychain, ATS exceptions removed from Info.plist
**Why it works:** All user data must be transmitted over encrypted connections and stored using secure platform APIs.

## Common questions

**How long does this typically take to fix?**

Typical turnaround is 2-8 hours (difficulty: medium). After resubmission, most re-reviews complete within 24-48 hours.

---
*Machine-readable source: https://api.appstorereject.com/api/rejections/detail?slug=guideline-16-safety-insecure-data-handling*