피드로 돌아가기
How to verify Gumroad license keys in an Electron app (and the 3 gotchas nobody warns you about)
Dev.toDev.to
Security

Gumroad API 기반 Electron 앱 라이선스 검증 및 캐싱 전략

How to verify Gumroad license keys in an Electron app (and the 3 gotchas nobody warns you about)

Ape Collective2026년 6월 15일3beginner

Context

Gumroad의 기본 라이선스 키 발행 기능만으로는 실시간 유효성 검증 및 오프라인 접근 제어가 불가능한 구조적 한계 존재. 단순 키 존재 여부 확인 시 환불 및 구독 취소 사용자를 차단하지 못하는 보안 취약점 발생.

Technical Solution

  • gumroad-license-lite 라이브러리를 통한 Refund, Dispute, Subscription 상태를 포함한 정밀 유효성 검증 로직 구현
  • Network Flaky 상황 대비를 위해 Local JSON Storage 기반의 LicenseGate 캐싱 레이어 설계
  • recheckEveryDays(3일) 및 offlineGraceDays(14일) 설정을 통한 온라인 검증 주기 최적화 및 사용자 경험 유지
  • 단순 API 응답 기반의 '존재 확인'에서 '상태 기반 유효성 확인'으로 검증 프로세스 전환
  • 로컬 캐시의 수정 가능성이라는 Trade-off를 수용하며 구현 복잡도와 사용자 편의성 간의 균형 달성
  • 고도화 필요 시 Signing Server 및 Webhook 기반의 Device-bound Token 시스템으로 확장 가능한 구조 제안

1. 라이선스 검증 시 키의 존재 여부가 아닌 환불 및 구독 상태 플래그를 반드시 확인했는가?

2. 네트워크 단절 상황을 고려한 Offline Grace Period 정책이 설계에 반영되었는가?

3. 로컬 캐시 저장소의 무결성 수준이 비즈니스 보안 요구사항을 충족하는가?

4. 기기 제한(Device Limit) 필요 시 API의 Global Counter 한계를 인지하고 별도의 Device ID 바인딩 전략을 세웠는가?

원문 읽기