ipaship-audit
요약
ipaship-audit는 iOS 앱 제출 전 Apple의 리뷰 가이드라인 준수 여부를 자동으로 검사하는 AI 기반 감사 도구입니다. 사용자가 .ipa 파일을 업로드하면 Anthropic, OpenAI, Google Gemini 등 다양한 AI 모델을 활용하여 안전성, 성능, 법률 등 6개 카테고리에 대한 종합적인 분석 보고서를 실시간으로 생성합니다.
핵심 포인트
- Apple App Store 리뷰 가이드라인의 6가지 주요 카테고리(안전성, 성능, 비즈니스, 디자인, 법률/개인정보, 기술)를 종합적으로 감사
- Anthropic (Claude), OpenAI (GPT), Google Gemini 등 멀티 프로바이더 AI 모델 선택 및 API 키 직접 사용 지원
- 제로 트러스트 보안 모델을 적용하여 파일은 처리 후 즉시 삭제되며, API 키는 서버에 저장되지 않음
- Next.js 15, React 19 기반의 오픈 소스 프로젝트로 Markdown 및 PDF 보고서 내보내기 기능 제공
AI 기반 iOS App Store 준수 여부 감사 도구. 제출하기 전에 .ipa 파일을 업로드하여 Apple의 리뷰 가이드라인 (Review Guidelines)에 대한 종합적인 감사를 받으세요.
라이브 사이트: ipaship.com
IPA 분석— 자동화된 준수 여부 감사를 위해 .ipa 파일(최대 150MB)을 업로드하세요.
전체 가이드라인 커버리지— App Store 리뷰 가이드라인의 6가지 주요 카테고리인 안전성 (Safety), 성능 (Performance), 비즈니스 (Business), 디자인 (Design), 법률 및 개인정보 보호 (Legal & Privacy), 기술적 사항 (Technical)을 모두 확인합니다.
멀티 프로바이더 AI— Anthropic (Claude), OpenAI (GPT), Google Gemini 또는 OpenRouter의 API 키를 직접 가져와 사용하세요.
모델 선택— 프로바이더별로 특정 모델 (Claude Sonnet 4, GPT-4o, Gemini 2.5 Flash 등)을 선택할 수 있습니다.
실시간 스트리밍— AI가 코드를 분석함에 따라 감사 보고서가 실시간으로 생성되는 과정을 확인하세요.
보고서 내보내기— Markdown 또는 PDF로 다운로드할 수 있습니다.
제로 트러스트 보안 (Zero-Trust Security)— 파일은 일시적인 임시 저장소에서 처리된 후 즉시 삭제됩니다. API 키는 브라우저에만 머물며, 당사의 서버에는 절대 저장되지 않습니다.
100% 오픈 소스 (Open Source)— 코드베이스 전체를 감사할 수 있습니다.
| 계층 (Layer) | 기술 (Technology) |
|---|---|
| 프론트엔드 (Frontend) | Next.js 15, React 19, TypeScript, Tailwind CSS, Framer Motion |
| ... |
- Node.js 18 이상
- MongoDB URI (Atlas 또는 로컬)
- 최소 하나 이상의 AI 프로바이더 API 키
unzip이 서버/런타임 환경에 설치되어 있어야 함
# Ubuntu/Debian
sudo apt-get update && sudo apt-get install -y unzip
# 저장소 복제 (Clone the repo)
git clone https://github.com/atharvnaik1/ipaship-app-reviewer.git
cd ipaship-app-reviewer
...
브라우저에서 http://localhost:8080을 엽니다.
npm run build
npm start
업로드 (Upload)— .ipa 파일을 드래그 앤 드롭합니다. 서버는 메모리 버퍼링 없이 Busboy를 통해 파일을 디스크로 스트리밍합니다.
추출 (Extract)— IPA 파일의 압축을 해제하고 모든 관련 소스 파일(.swift, .m, .plist, .entitlements, .storyboard, .xcprivacy)을 수집합니다.
, 등). 바이너리 파일(Binary files) 및 빌드 아티팩트(build artifacts)는 제외됩니다.분석 (Analyze)— 소스 파일은 구조화된 감사 프롬프트(audit prompt)와 함께 사용자가 선택한 AI 제공업체(AI provider)로 전송됩니다. 응답은 실시간으로 스트리밍됩니다.보고 (Report)— 통과/실패(pass/fail) 표시기, 심각도 등급(severity ratings), 그리고 우선순위가 지정된 수정 계획(remediation plan)이 포함된 구조화된 컴플라이언스 보고서(compliance report)를 받게 됩니다.
| 메서드 (Method) | 엔드포인트 (Endpoint) | 목적 (Purpose) |
|---|---|---|
POST | /api/audit | IPA 업로드, AI 감사 보고서 스트리밍 |
POST | /api/save-report | MongoDB에 보고서 저장 |
GET | /api/visitor | 방문자 수 증가 및 반환 |
ipaship은 다양한 생태계와 언어를 위한 즉시 사용 가능한 보일러플레이트(boilerplate) SDK 및 래퍼(wrappers)를 제공합니다. 이들은 wrappers/ 디렉토리에서 찾을 수 있습니다. 각 래퍼는 CI/CD 파이프라인, 백엔드(backend), 또는 빌드 환경에서 .ipa 파일을 직접 실용적으로 감사할 수 있도록 스켈레톤(skeletoned) 구조로 설계되었습니다!
다음은 제공된 래퍼들과 상호작용하기 위한 빠른 명령어들입니다:
Node.js / NPM
cd wrappers/npm && npm install
node index.js
Python
cd wrappers/python
python3 ipaship.py
Rust
cd wrappers/rust
cargo run --release
Go
cd wrappers/go
go run ipaship.go
Homebrew (MacOS CLI)
brew install ./wrappers/homebrew/ipaship.rb
ipaship /path/to/app.ipa
C / C++
cd wrappers/c && gcc ipaship.c -o ipaship && ./ipaship
cd wrappers/cpp && g++ ipaship.cpp -o ipaship && ./ipaship
Java & Kotlin
# Java
cd wrappers/java && mvn clean install
# Kotlin
...
Ruby
cd wrappers/ruby
gem build ipaship.gemspec
PHP
cd wrappers/php
composer install
C# / .NET
cd wrappers/csharp-dotnet
dotnet build
R
# R 스크립트 내에서 로드 (wrappers/r)
source("R/ipaship.R")
ipaship_audit("app.ipa", "API_KEY")
Linux (Bash CLI)
chmod +x wrappers/linux/ipaship-cli.sh
./wrappers/linux/ipaship-cli.sh /path/to/app.ipa "YOUR_API_KEY"
Swift & Apple Frameworks (Obj-C / Cocoapods)
wrappers/swift-cocoapods추가
로컬 Swift Package Dependency (의존성)로 사용하십시오. - wrappers/objc의 Objective-C 헤더를 빌드에 통합하십시오.
크로스 플랫폼 앱 프레임워크 (Dart/Flutter, Expo, Ionic)
Flutter: pubspec.yaml의 로컬 경로 의존성 (local path dependency)을 통해 wrappers/flutter-dart를 임포트(Import)하십시오.
Expo: wrappers/expo/index.js를 Expo 설정 플러그인 (config plugin)으로 통합하십시오.
Ionic: Capacitor와 함께 wrappers/ionic 래퍼 (wrapper)를 사용하십시오.
Ubuntu 24.04 VM을 위한 배포 스크립트가 포함되어 있습니다:
# 서버에서 먼저 .env.local을 생성합니다
cp .env.example /opt/ipaship/.env.local
# unzip이 설치되어 있는지 확인하십시오 (/api/audit 추출에 필요)
...
이 스크립트는 Node.js 20, PM2, Nginx (스트리밍/업로드 지원 포함) 및 UFW 방화벽을 설정합니다.
클라우드 스토리지 미사용— 파일은 임시 /tmp 디렉토리에서 처리되며 감사 (audit) 직후 즉시 삭제됩니다.
BYOK (Bring Your Own Key)— API 키는 브라우저의 localStorage에 저장되며, 당사의 서버로 절대 전송되지 않습니다.
셸 인젝션 (Shell injection) 방지— 파일 추출 시 execFile (셸 미사용)을 사용하여 파일명을 통한 커맨드 인젝션 (command injection)을 방지합니다.
바이너리 탐지— 바이너리 plist 및 컴파일된 파일은 탐지되어 건너뜁니다.
속도 제한 (Rate limiting)— 인메모리 (in-memory) LRU 캐시를 통해 IP당 분당 5회 요청으로 제한합니다.
프롬프트 인젝션 (Prompt injection) 방어— 파일 내용을 오직 데이터로만 취급하도록 명시적인 지침을 포함하여 시스템/사용자 메시지를 분리합니다.
기여를 환영합니다! 이슈(issue)를 생성하거나 풀 리퀘스트 (pull request)를 제출해 주세요.
오픈 소스입니다. 자세한 내용은 저장소(repository)를 참조하십시오.
Built by ipaShip © ipaShip – Original Creator: Atharv Naik
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기