我想验证iOS的收据。
我想我应该向App验证服务器(https://sandbox.itunes.apple.com/verifyReceipt或https://buy.itunes.apple.com/verifyReceipt)发送收据。
但是苹果的参考文件说:
不可能直接在用户设备和App之间建立可信连接,因为您无法控制该连接的任何一端。
苹果建议将收据发送到我的服务器,然后发送到apple验证服务器进行验证。
(ref/doc/uid/TP40010573-CH104-SW1)
我不明白为什么无论使用HTTPS连接,设备和App之间的连接都是不可信的。
发布于 2014-04-14 04:40:22
您的应用程序运行在由用户控制的硬件上。他们可以直接接触它,并且可以用它做任何他们想做的事情。操作系统并不能让用户很容易地处理事情,但它是可以做到的,黑客也可以这样做。
您可以在iOS设备上验证iOS收据。但是你不能确定收据是否有效。用户可以入侵设备,使您认为收据是有效的。
我不明白为什么无论使用HTTPS连接,设备和App之间的连接都是不可信的。
HTTPS并不能保护您免受对iOS设备拥有物理控制的黑客的攻击。黑客可以在设备上安装不同的SSL密钥,允许它与不同的服务器连接。
当您的应用程序试图与苹果的服务器通信时,任何网络管理员都可以更改它,这样就可以联系到其他服务器,而不是苹果的服务器。此服务器通常会被拒绝,因为SSL密钥将不受信任.但是,如果用户控制设备,他们可以使其信任无效的SSL密钥。
但是,您的服务器由您控制。您的客户没有实体访问权限。因此,您的服务器(希望!)不能被黑。这意味着您的服务器可以被信任,这与设备不同。当您的服务器建立到Apple服务器的SSL连接时,您知道您确实在与Apple的服务器对话。没有一个是你的用户安装的绕过应用程序内的购买。
所以,如果用户在你的应用程序里买了什么.你不想把正在购买的东西存储在应用程序中。您希望将其存储在服务器上,而该服务器只在苹果的服务器验证收据后才将购买的数据发送给设备。
如果你不想花钱运行自己的服务器,那么你就必须接受这样一个事实:任何拥有几个小时空闲时间的技术精英都可以伪造iOS购买收据,并让你的设备相信它们是有效的。
https://stackoverflow.com/questions/23051827
复制相似问题