成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS應用內支付的那些坑

移動開發 iOS
我們在服務器端增加了驗證IAP是否有效的邏輯。在產品上線后,如我們所料,我們收到了大量的欺騙性購買,這些都被我們的服務器識別出來了,但是我們也遇到了以下這次沒有想到的情況。

我們在今年春節后上線了新的在線智能題庫:猿題庫。猿題庫現在推出了公務員考試行測和申論2個產品,均包括web, iOS和Android三個平臺。這次我們嘗試做一個收費的產品,所以在iOS端集成了應用內支付(IAP)功能。在開發過程中和上線后,我們遇到了 IAP中的一些坑,在此分享給各位。

IAP 審核相關的坑

IAP開發的詳細步驟我寫在另一篇博客中了。在此主要介紹審核時遇到的問題。

IAP類型錯誤

由于我們是按月付費的產品,所以在設置IAP類型時,我沒有經驗,只是簡單設置成了可重復消費(Consumable)的IAP項目。但是我不知 道,蘋果對于這種按時間收費的產品,應該使用不可更新的定閱(Non-Renewing Subscription)類型。這個類型設置錯誤造成了我們app的一次審核被拒。

IAP驗證邏輯

由于蘋果在iOS5.0以下有IAP的bug,使得攻擊者可以偽造支付成功的憑證。而iOS6.0的系統在越獄后同樣可以偽造憑證,所以我們對于應用內支付,增加了服務器端的驗證。服務器端會將支付憑證發給蘋果的服務器進行二次驗證,以保證憑證是真實有效的。

在我們公司的測試服務器中,我們會連接蘋果的測試服務器(https://sandbox.itunes.apple.com/verifyReceipt)驗證。

在我們部署在線上的正式服務器中,我們會連接蘋果的正式服務器(https://buy.itunes.apple.com/verifyReceipt )驗證。

我們提交給蘋果審核的是正式版,我們以為蘋果審核時,我們應該連接蘋果的線上驗證服務器來驗證購買憑證。結果我理解錯了,蘋果在審核App時,只會 在sandbox環境購買,其產生的購買憑證,也只能連接蘋果的測試驗證服務器。但是審核的app又是連接的我們的線上服務器。所以我們這邊的服務器無法 驗證通過IAP購買,造成我們app的又一次審核被拒。

解決方法是判斷蘋果正式驗證服務器的返回code,如果是21007,則再一次連接測試服務器進行驗證即可。蘋果的這一篇文檔上有對返回的code的詳細說明。

in-app_purchase

IAP上線后的遇到的情況

我們在服務器端增加了驗證IAP是否有效的邏輯。在產品上線后,如我們所料,我們收到了大量的欺騙性購買,這些都被我們的服務器識別出來了,但是我們也遇到了以下這次沒有想到的情況:

1、由于國內越獄用戶的比例比較大(大概為50%),所以雖然我們服務器會驗證購買憑證,但是每天有超過50%以上的憑證都是偽造的。同時由于蘋果 的驗證服務器在美國,憑證驗證請求響應的時間比較慢,大量的偽造憑證發給蘋果服務器,不知道會不會被蘋果認為我們是在惡意進行DDOS。至少我們發現有些 時候,驗證請求會超時。

2、由于國內有許多小白用戶,他們的手機從購買時就被渠道商幫忙越獄過了并且安裝了IAP free插件。所以對于這類用戶,他們即使想付費購買,由于系統原有的IAP支付功能已經被破壞,所以他們是無法正常付費的。麻煩的是,他們會以為這是我 們的app的問題,轉而給我們的客服打電話投訴。這讓我們非常郁悶。

3、蘋果的驗證服務器有時候會出問題,我們發現本來約定好返回的JSON數據在有幾次返回的居然是一個XML格式的文件。造成我們將正常的付費 IAP憑證驗證失敗。所以,在服務器記錄下所有的驗證憑證非常有必要,一來可以防止黑客多次提交同一個成功憑證的重放攻擊,二來在需要時可以手工進行再驗 證。

越獄手機可能被黑客竊取購買憑證!

我們發現有一部分用戶反饋說已經收到蘋果的扣費賬單,但是我們從服務器的驗證記錄看,他上傳的憑證卻是虛假的。由于這些用戶不太多,我們一開始以為 是用戶在惡意欺騙我們,后來我們讓他將蘋果的付費賬單郵件轉發給我們,以及將itunes的購買記錄截圖轉發給我們,我們越來越懷疑這里面有一個黑色的產 業鏈。越獄手機的正常購買憑證可能被黑客的惡意程序截獲,具體的攻擊方式我們討論了一下,其實就是被中間人攻擊,詳細的過程如下:

1.越獄手機的在被破解后,可能從一些破解渠道安裝了黑客的惡意程序。

2.黑客將越獄手機所有https請求都經過他的中間服務器。

3.當有支付請求時,黑客先將請求發給蘋果服務器,待蘋果將成功的憑證返回后,黑客將這個憑證替換成假的憑證,完全支付憑證的偷取。

或許有人會問,這個憑證拿來有什么用呢?很簡單 ,因為蘋果為了保護用戶的隱私,支付憑證中并不包含任何用戶的apple id信息,所以我們的app和服務器無法知道這個憑證是誰買的,而只能知道這個憑證是真的還是假的。于是黑客就可以用這個憑證,在另外的賬號中通知我們完 成了購買,而發來的驗證憑證又是真實的,所以我們的服務器就會誤認為是黑客的賬號完成了購買,繼而把會員期算在黑客的賬號上。

再舉一個簡單的例子,你拿500塊錢買了順風優選的500元購物券,由于這個購物券是不記名的,所以順風優選無法知道是誰買的。如果這個購物券在發 放過程中被人掉包,那么偷購物券的人就可以拿這個偷來的真購物券來購物,而順風優選的卡因為是不記名的,所以也無法查證這件事情。在這個例子中,購物券的 不記名和蘋果的支付憑證無賬號信息是同一個道理。

鑒于以上情況,考慮到越獄手機不但不能成功支付,還會有安全問題,所以我們在新版中取消了越獄手機中的IAP支付功能。

所以,請大家還是不要越獄自己的手機,iphone手機越獄后風險相當大。實在不值得為了免費玩幾個游戲就丟掉安全性。

【編者按】本文轉自猿題庫、粉筆網開發工程師唐巧的博客。

責任編輯:閆佳明 來源: leiphone
相關推薦

2017-03-01 11:06:33

2011-12-15 09:45:21

PhoneGap

2011-12-22 19:57:38

PhoneGap

2011-05-19 09:57:45

應用內支付App StoreiOS

2012-03-23 22:31:10

移動支付

2017-07-19 14:26:01

前端JavaScriptDOM

2021-09-07 14:35:48

DevSecOps開源項目

2022-05-15 08:13:50

Mysql數據庫Mycat

2020-04-21 15:18:11

財務信息化

2015-03-12 09:51:09

CoreDataiCloud

2012-05-03 15:16:52

移動支付應用內支付

2020-05-28 16:15:50

HTTP暗坑前端

2017-03-31 10:27:08

推送服務移動

2017-07-06 11:41:48

CIOIT技術

2017-08-04 17:07:32

JavaArraysList

2016-12-28 13:19:08

Android開發坑和小技巧

2015-04-13 17:39:11

移動IM開發

2018-02-06 08:36:02

簡歷程序員面試

2017-08-28 15:30:49

Android編碼器編碼

2018-07-05 06:02:38

綜合布線弱電動力線
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲第一女人av | 欧美日韩一 | 欧美一区二区三区精品免费 | 精品国产1区2区3区 在线国产视频 | 久草中文网 | 欧美精品国产一区二区 | 亚洲自拍一区在线观看 | 羞羞视频网页 | 久久69精品久久久久久国产越南 | 精产国产伦理一二三区 | 成人免费在线播放视频 | 男女网站在线观看 | 亚洲欧美日韩久久久 | 日韩精品一区二区三区免费观看 | 99视频在线免费观看 | 国产一区二区三区免费观看视频 | 欧美日韩精品免费观看 | 亚洲第一av | 久久亚洲国产精品日日av夜夜 | 日韩一二三区视频 | 看羞羞视频免费 | 午夜影院在线观看免费 | 综合久久av| 国产一区二区在线91 | 性一交一乱一伦视频免费观看 | 欧美日韩在线综合 | 国产精品久久久久久中文字 | 欧美区在线 | 国产一级在线观看 | www.99热.com | 国产高清视频在线播放 | 国产精品精品 | 久久久久久久一级 | 久久久久久av | 天天干天天爱天天爽 | 成人欧美 | 欧美黄 片免费观看 | 久精品久久| 性高朝久久久久久久3小时 av一区二区三区四区 | 超碰伊人久久 | 国产一区二区精品自拍 |