기기·환경 보안
재생하는 기기와 앱 환경을
플랫폼별로 점검합니다
루팅된 기기나 앱 플레이어가 잡히면 Android SDK가 앱 쪽 메서드를 호출합니다. 모바일 SDK 두 종은 셀룰러 데이터 사용 제한과 디버깅 프록시 방어를, Windows용 PlaynPlay App은 개발자 도구와 브라우저 단축키 잠금을 갖췄습니다. 항목마다 문서에 적힌 플랫폼과 근거, 오픈 전에 확인할 점을 나눠 정리했습니다.
최종 수정
항목별로 문서화된 플랫폼
보안 검토표에 옮겨 적기 좋게 항목, 플랫폼, 근거를 한 줄로 묶었습니다. 근거는 SDK 문서의 API 이름과 변경 이력입니다.
| 항목 | 문서화된 플랫폼 | 근거 | 운영 의미 |
|---|---|---|---|
| 루팅·앱 플레이어 감지 | Android SDK | onDeviceRootedOrAppPlayerDetected(), 2025.01.23 차단 로직 개선 | 감지 뒤 대응을 고객사 앱이 정합니다. |
| 셀룰러 데이터 제한 | Android SDK, iOS SDK | allowsCellularAccess, 2024.04.24 재생·다운로드 옵션 추가 | 모바일 데이터로는 재생·다운로드하지 않게 합니다. |
| 디버깅 프록시 방어 | Android SDK, iOS SDK | 2026.01.30 변경 이력 | 통신 내용을 들여다보려는 분석 도구에 대비합니다. |
| 개발자 도구·단축키 | PlaynPlay App Windows 버전 | 1.0.28 개발자 도구 열림 문제 수정, 1.0.29 브라우저 단축키 비활성화 | 커스텀 페이지를 앱 안에서 뜯어보는 시도에 대비합니다. |
| 등록 앱 확인 | Android SDK, iOS SDK | Bundle ID (Package name) 등록, 미등록 시 오류 | 등록하지 않은 앱으로는 재생을 시작하지 못합니다. |
등록 앱 확인과 기기 수 제한은 계정 공유 방지에서 자세히 다룹니다.
루팅·앱 플레이어 감지의 구조
SDK가 감지하고 고객사 앱이 대응하는 구조입니다. 대응을 비워 두면 감지 신호를 받고도 아무 일이 일어나지 않을 수 있으니 기획 단계에서 정하세요.
-
Callback
호출되는 자리
앱 화면 안에 플레이어를 넣는 기반 클래스 MediaPlayerBaseFragment의 재정의 가능한 메서드입니다. 루팅된 기기이거나 앱 플레이어로 판단되면 이 메서드가 불립니다. 이 클래스는 2025년 4월 7일 버전에 추가됐습니다.
-
Scope
앱 플레이어라는 말
국내에서는 PC에서 Android 앱을 돌리는 에뮬레이터를 흔히 앱 플레이어라고 부릅니다. 감지 대상의 구체적인 범위는 기술 문의로 확인하고 검토 기록에 남기세요.
-
History
보강 이력
2025년 1월 23일 배포분에 앱 플레이어 차단 로직 개선이 들어갔습니다. 오래된 SDK를 쓰는 앱이라면 업데이트 일정부터 잡습니다.
메서드 선언은 MediaPlayerBaseFragment 문서에 있습니다.
감지 뒤 대응, 세 가지 선택지
서비스 성격에 따라 고릅니다. 표의 장단점은 판단을 돕기 위한 예시입니다.
| 대응 | 앱이 하는 일 | 맞는 서비스 | 주의할 점 |
|---|---|---|---|
| 재생 중단 | 플레이어를 닫고 이 기기에서는 재생할 수 없다고 안내 | 사내 대외비, 고가 유료 강의 | 정상 사용자 문의에 대비해 안내 문구와 문의 창구를 함께 둡니다. |
| 경고 후 재생 | 보안 위험을 알리고 재생은 계속 | 무료·저가 콘텐츠가 많은 서비스 | 녹화 차단과 워터마크가 함께 켜져 있는지 확인합니다. |
| 기록만 남김 | 사용자 ID와 시각을 고객사 서버에 보내 집계 | 정책을 정하기 전 시범 기간 | 기간을 정해 두고 결과를 보고 위 두 방식 중 하나로 옮깁니다. |
어떤 방식이든 감지 시각과 사용자 ID를 서버에 남기면, 이후 녹화 차단 로그나 유출 조사와 맞춰 볼 수 있습니다. 대응 방식을 바꿀 때는 앱 업데이트가 필요하니 처음부터 서버 설정값으로 고를 수 있게 만들어 두는 편이 편합니다.
셀룰러 데이터 사용 제한 (Android·iOS)
두 SDK 모두 2024년 4월 24일 버전에 재생과 다운로드의 셀룰러 데이터 옵션이 들어왔습니다. 기본값은 허용입니다.
| 범위 | Android SDK | iOS SDK |
|---|---|---|
| 화면 단위 설정 | MediaPlayerActivityConfiguration, 앱 화면 안 플레이어는 MediaPlayerBaseFragment.Parameters의 allowsCellularAccess | MediaPlayerViewController.Configuration의 allowsCellularAccess |
| 재생 중 플레이어 | MediaPlayer.allowsCellularAccess (스트리밍 재생) | MediaPlayer.allowsCellularAccess (스트리밍 재생) |
| 다운로드 | DownloadManager의 add(mediaItem, allowsCellularAccess) | DownloadManager의 add(mediaItem:allowsCellularAccess:) |
| 막혔을 때 오류 | NoCellularAccessException | noCellularAccess |
오류 조건은 셀룰러 데이터를 허용하지 않은 상태에서 Wi-Fi 연결이 끊겼는데 재생하려는 경우입니다. 앱에는 Wi-Fi에 다시 연결해 달라는 안내를 준비하세요. Wi-Fi 전용 설정은 데이터 요금과 단말 정책을 위한 것이며, 접속망을 사내망으로 한정해야 한다면 그 요구는 상담에서 따로 확인하세요.
PC 앱과 커스텀 페이지의 분석 도구 관리
커스텀 페이지는 PlaynPlay App 안에서 실행되는 고객사 웹 페이지입니다. 앱 쪽 잠금과 고객사 코드 쪽 관리가 함께 필요합니다.
-
1.0.28 · 1.0.29
Windows 버전 잠금
2025년 10월 13일 1.0.28에서 개발자 도구가 열리던 문제를 고쳤고, 10월 22일 1.0.29에서 브라우저 단축키를 비활성화했습니다. 설정 파일의 minVersion을 1.0.29 이상으로 올리면 그 아래 버전을 쓰는 사람만 업데이트 안내를 받습니다.
-
openDevTools()
디버깅 함수는 운영에서 빼기
커스텀 페이지의
openDevTools()는 개발 때 디버깅 용도로만 쓰고 운영 환경에는 쓰지 말라고 문서가 권합니다. 문서 예시는 Ctrl+F10에 이 함수를 연결하니, 배포 전에 이런 연결 코드를 지웠는지 확인하세요. -
startService()
보안 서비스 실행 확인
playnplay.startService()는 PlaynPlay 보안 서비스를 실행합니다. 모든 커스텀 페이지가 App ID와 서비스 스크립트(playnplay-service.js) 경로로 이 함수를 호출하는지 점검 목록에 넣으세요. -
Debugging Tool
로그 출력 도구는 개발 PC에만
커스텀 페이지가 남기는 콘솔 로그를 보여 주는 디버깅 툴이 macOS용 2종, Windows용 2종 빌드로 나와 있습니다. 개발 PC에만 설치하고 운영 PC 배포 목록에서는 빼 두기를 권합니다.
함수 설명 원문은 커스텀 페이지 문서에서 확인합니다.
통신과 앱 보호가 보강된 날짜
모바일 SDK 변경 이력에서 기기·통신 보호와 관련된 항목입니다. 앱 업데이트 계획을 세울 때 기준선으로 씁니다.
| 날짜 | 대상 | 변경 내용 | 확인할 점 |
|---|---|---|---|
| 2024.02.15 | Android·iOS | SDK 보안 기능 추가. 콘솔에 패키지 이름(Bundle ID)을 올리고 나서 App ID를 설정하는 절차 | 시험·운영 빌드 식별자를 모두 등록했는지 |
| 2025.01.23 | Android | 앱 플레이어 차단 로직 개선 | 감지 대응 코드를 이 버전 이후 SDK로 시험했는지 |
| 2026.01.26 | Android·iOS | 보안 관련 개선, CDNetworks 고객사용 API 도메인을 따로 분리 | CDNetworks 고객사는 이 버전의 변경 사항을 벤더와 확인했는지 |
| 2026.01.30 | Android·iOS | 디버깅 프록시 방어, 오류 메시지 출력 개선 | Android 앱의 의존성 목록에 media3-datasource-okhttp가 들어갔는지 |
| 2026.03.03 | Android | OkHttp v4에서 IPv4/IPv6 듀얼 스택 문제 수정 | 1월 30일 버전으로 올린 앱이라면 이 수정까지 함께 반영했는지 |
오픈 전 기기·환경 점검표
보안팀과 개발팀이 함께 채우는 표입니다. 시험한 기기, OS 버전, 앱 버전을 결과 옆에 적어 두세요.
-
Android
감지 대응
- 시험용 루팅 기기와 앱 플레이어에서 실행했는가
- 정한 대응(중단·경고·기록)이 그대로 동작하는가
- 감지 기록이 고객사 서버에 들어오는가
-
Android · iOS
통신과 버전
- 셀룰러를 막은 과정에서 Wi-Fi를 끊고 재생했을 때 안내가 맞는가
- 다운로드도 같은 조건으로 시험했는가
- 배포 앱의 SDK가 2026년 1월 30일 이후인가
-
PC
앱과 커스텀 페이지
- Windows에서 브라우저 단축키와 개발자 도구가 열리지 않는가
- minVersion 값이 운영 기준에 맞는가
- openDevTools() 연결 코드를 지우고 startService() 호출을 확인했는가
기기·환경 보안 FAQ
-
감지되면 SDK가 알아서 재생을 멈추나요?
문서가 밝힌 동작은 감지 시점에 재정의 가능한 메서드가 불린다는 것까지입니다. 멈출지, 알릴지, 기록만 할지는 고객사 앱 코드로 정하고, 메서드를 비워 둘 때의 동작은 기술 문의로 확인하세요.
-
기본 플레이어 화면만 쓰는 앱은 어디에 대응을 넣나요?
감지 메서드는 MediaPlayerBaseFragment에 정의돼 있습니다.
presentMediaPlayer()로 기본 화면만 띄우는 앱이라면 감지 대응을 어느 구조에 넣을지 연동 설계 때 함께 정하세요. -
셀룰러 제한을 과정마다 다르게 둘 수 있나요?
재생 화면을 열 때 설정 객체를 넘기고, 다운로드는 항목을 추가할 때마다 allowsCellularAccess 값을 넘깁니다. 그래서 앱이 과정 정보를 보고 값을 바꿔 넣는 방식으로 운영할 수 있습니다.
-
디버깅 프록시 방어를 쓰려면 무엇을 하나요?
2026년 1월 30일 이후 SDK로 앱을 다시 빌드해 배포합니다. Android 빌드에는 이 버전부터 media3-datasource-okhttp 라이브러리를 더해야 합니다. 수강생이 예전 앱을 계속 쓰면 보강이 적용되지 않으니 업데이트 안내도 함께 계획하세요.
PlaynPlay 도입을 위한
기술적 지원과 서비스를 제공합니다.
제품 문의부터 데모 시연까지, 모든 지원을 위해 세일즈 및 기술 지원 팀이 준비되어 있습니다.
-
제품 및 도입 문의
도입 범위, 일정, 견적을 상담합니다. 서비스 형태와 사용자 규모를 알려주시면 맞는 연동 방식과 보안 설정을 제안합니다.
-
Trial 신청
PlaynPlay의 기능을 먼저 테스트해 보세요. 트라이얼 기간 동안 귀사의 제품과 PlaynPlay를 연동하고 성능과 기능을 직접 검증할 수 있습니다.
-
PlaynPlay 기술 문의
SDK 연동, Callback URL 설계, DRM 패키징 중에 생기는 질문에 기술팀이 답합니다. 공개된 개발 문서와 샘플 프로젝트도 함께 확인하세요.
기능
플랫폼
기능