Swift iOS 파일 보호 비활성화

iOS 파일 보호 비활성화

설명

민감 데이터 파일을 .noFileProtection, FileProtectionType.none, NSFileProtectionNone으로 저장하면 사용자 암호와 잠금 상태에 따른 접근 보호가 적용되지 않습니다. 이 클래스도 기기 UID로 암호화되므로 디스크에 평문으로 저장된다는 뜻은 아니지만, 기기가 잠겨 있거나 부팅 직후인 상태에서 파일 접근을 제한하는 보호가 약해집니다.

잠재적 영향

  • 저장된 민감 정보 노출
  • 백업 또는 디바이스 추출 경로를 통한 데이터 유출
  • 분실·탈취된 기기에서 파일 접근 가능성 증가

해결 방법

  1. 민감 파일은 .completeFileProtection 또는 요구사항에 맞는 강한 파일 보호 클래스로 저장합니다.
  2. FileManager.setAttributes에서 보호 클래스를 FileProtectionType.none 또는 NSFileProtectionNone으로 설정하지 않습니다.
  3. 백그라운드 접근이 필요하더라도 최소 권한의 보호 클래스를 선택하고 민감 값 자체는 Keychain에 저장합니다.

예시

변경 전

swift
try data.write(to: url, options: .noFileProtection)

변경 후

swift
try data.write(to: url, options: .completeFileProtection)

설명:

  • 변경 전: 사용자 암호에 기반한 파일 보호를 적용하지 않아 잠금 상태 보호가 약해집니다.
  • 변경 후: 강한 파일 보호 클래스를 사용해 저장 데이터를 보호합니다.

참조