iOS 인앱구매(in app purchase) 검증하기

iOS도 인앱해킹에서 자유롭지 않습니다.


요즘 거의 모든 게임이 freemium 형태로 배포되고 있습니다.


사용자는 무료로 게임을 다운로드, 설치하여 이용할수 있고, 게임 내에서 결제를 통해 아이템 구매를 하는 방식이죠.



매출이 모두 인앱구매에서 나오기 때문에


인앱구매에 대한 해킹의 대비가 허술하면 그만큼 매출에서 손해를 보게 됩니다.




인앱구매검증시 구매결과가 담긴 영수증에 대해서 애플을 통해 한번더 조회하면 좀 더 안전한 인앱구매기능을 구현할수 있습니다.



① 사용자가 앱에서 인앱구매요청을 합니다. 앱스토어 아이디와 비밀번호를 입력하면 구매요청이 전송됩니다.



② 구매가 승인되면 애플은 해당 주문에 대한 처리결과를 보내줍니다.



대부분 이렇게 2개 단계로 인앱구매를 진행하고 승인된 주문에 대해서 해당 아이템을 게임 내에서 부여받게 됩니다.


좀 더 강화된 보안을 위해서는 전송받은 구매 결과가 유효한 결과인지, 애플서버에 한번더 조회하는 절차를 거치면 됩니다.


그리고 이 절차는 좀 더 안전하게 하기 위해 원격지의 서버를 통해 진행하는것이 좋습니다.



③ ②에서 전송받은 주문정보를 원격지의 서버로 보냅니다.



④ 원격지의 서버는 주문정보를 애플로 조회요청합니다.


이 내용은 애플 개발자 문서에도 정리되어 있습니다.


Verifying Store Receipts



⑤ 애플로부터 조회요청한 결과를 받아 해당 주문이 유효한것으로 판정되면 원격지서버는 해당 주문에 대한 처리를 합니다. 예를 들면 해당 회원의 코인이나 아이템을 지급한다던가 하는 것들이죠.



⑥ 해당 주문처리가 모두 완료되면 원격지의 서버는 해당 사용자에게 최종 처리결과를 통보하면 됩니다.



iOS에서의 인앱방지는 위와 같은 절차로 진행하시면 됩니다.


해당 기능을 도와주는 라이브러리도 이미 나와있네요


https://github.com/iosdeveloper/iAPVerification




| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ··· | 42 |