설명
민감 데이터 파일을 .noFileProtection, FileProtectionType.none, NSFileProtectionNone으로 저장하면 사용자 암호와 잠금 상태에 따른 접근 보호가 적용되지 않습니다. 이 클래스도 기기 UID로 암호화되므로 디스크에 평문으로 저장된다는 뜻은 아니지만, 기기가 잠겨 있거나 부팅 직후인 상태에서 파일 접근을 제한하는 보호가 약해집니다.
잠재적 영향
- 저장된 민감 정보 노출
- 백업 또는 디바이스 추출 경로를 통한 데이터 유출
- 분실·탈취된 기기에서 파일 접근 가능성 증가
해결 방법
- 민감 파일은
.completeFileProtection또는 요구사항에 맞는 강한 파일 보호 클래스로 저장합니다. FileManager.setAttributes에서 보호 클래스를FileProtectionType.none또는NSFileProtectionNone으로 설정하지 않습니다.- 백그라운드 접근이 필요하더라도 최소 권한의 보호 클래스를 선택하고 민감 값 자체는 Keychain에 저장합니다.
예시
변경 전
swift
try data.write(to: url, options: .noFileProtection)
변경 후
swift
try data.write(to: url, options: .completeFileProtection)
설명:
- 변경 전: 사용자 암호에 기반한 파일 보호를 적용하지 않아 잠금 상태 보호가 약해집니다.
- 변경 후: 강한 파일 보호 클래스를 사용해 저장 데이터를 보호합니다.