Ücretli iPhone App tarafından gerekli dış kaynakların korunması

5 Cevap php

Ben sadece 400MB üzerinden ağırlığında App Store şu anda bir uygulama geliştirdik. Bunun temel nedeni app şu anda ikili içine pişmiş videonun sürü özellikleri olduğunu.

Bizim bir sonraki sürümü için biz kullanıcı onlar on-demand tutmak istiyorum video indirmek için izin, bu videoyu externalise istiyorum, ve onlar zaten izledim videoları silmek istiyorum. Biz şu anda bir CDN vb kaynak konum ve şimdi biz bu videoyu ne kadar güvenli çalışmak için çalışıyoruz.

Sorun App yok insanlar sadece mp4s standart URL'ler kullanırsanız web üzerinden müşterilerin ödeme içindir bizim video indirmek mümkün olacak, olduğunu. Kolayca çalıntı olamaz ki biz bu videoları güvenli bir yolu var mı? '(Ben videoları insanlar her zaman app onları yırtılma ve bit torrent koyarak yollarını bulabilirsiniz indirildi kez eminim "kolayca" demek, ama çalmak eğer biz değil, eğer iyi olurdu t bant genişliği için ödemek zorunda ...)

Ben belki bir şekilde cihazın UDID bir karma çeşit kullanarak istenen ve daha sonra bir sunucu üzerinde doğrulanmış bir kerelik adresler oluşturmak ve daha sonra kullanıcının bu aracılığıyla indirmek için izin verebilecek düşünüyordum. Yoksa bu sadece bir saçmalık?

Bu sorunun mantıklı çözüm nedir?

Teşekkür peşin,

UPDATE: Unfortunately I can't use the in app purchase mechanisms as this app is well and truly out there, so need to find my own way of securing our content.

Verecek bir çözüm olarak bu iş: (benim argo, genellikle bir istemci tarafı kodlayıcı affet)

1) Sunucu tarafı, rastgele bir belirteç uygulaması tarafından talep edilebilir her 5-10 dakika oluşturulur.

App bu simgeyi olunca 2), bu cihaz UDID bu kullanır ve bir gizli anahtar md5 falan üzerinden başka belirteç oluşturmak için uygulama içinde pişmiş

3) Cihaz YENİ belirteci ve cihaz UDID ile sunucuya bir istekte

4) Sunucu aynı sihirli anahtar ile aynı işlem sunucu tarafı () yinelenen ve sağlanan UDID kullanarak üretir belirteç uygulaması ile talepte bir eşleşirse görerek doğrulamak için çalışır. eğer öyleyse, bu dosyayı teslim eder.

Bu işe misiniz?

5 Cevap

Ben senin öneri öneririm ne ile tutarlı olduğunu düşünüyorum.

Örnek için sona erme bağlamak için Amazon S3 yaklaşımın bir göz atın. Ben (Zend Framework Zend____Crypt____Hmac ile birlikte çalışır, http://framework.zend.com/wiki/pages/viewpage.action?pageId=35309 daha fazla bilgi için bakınız) bu bağlantıları oluşturmak için PHP aşağıdaki helper yazdı:

    public function getExpiredQueryString($objectName, $expireTime, $bucketName){
	      $stringToSign = "GET\n\n\n$expireTime\n/$bucketName/tracks/$objectName";
	      $hashedSignature = Zend_Crypt_Hmac::compute(self::AMAZON_AWS_SECRET_KEY, 'sha1', utf8_encode($stringToSign));
	      $signature = urlencode($this->_hex2b64($hashedSignature));

	      $url = 'http://' . $bucketName . '.s3.amazonaws.com/tracks/' . $objectName . '?AWSAccessKeyId=' . self::AMAZON_AWS_KEY . '&Expires=' . $expireTime . '&Signature=' . $signature; 
	      return $url;
    }

Aşağıdaki _hex2b64 (orijinal, ama görmek için yararlı değil) içeriği olan:

    private function _hex2b64($str){
          $raw = '';
          for ($i=0; $i < strlen($str); $i += 2)
          {
              $raw .= chr(hexdec(substr($str, $i, 2)));
          }
          return base64_encode($raw);	
     }

Uzun ve kısa sizin kullanıcı kimlik doğrulaması ve varlığın indir / akışı yetkilendirmek için kullanılır (örneğin) bir veritabanı tablosundaki bir ttl olabilecek bir dizgecikli bağlantı yapısını oluşturmak olabilir.

Bildiğim kadarıyla ölçeklenebilirlik ilgili olarak, vb veritabanı seçimi, web sunucusu, işletim sistemi, sunucu tarafı kod tabanının genel verimlilik, Bu büyük bir konuşma dahil olmak üzere tüm seçenekleri araştırmak gerekir.

Bu yardımcı olur umarım!

Ücretsiz uygulama sunan ve In-App Satın Alma gibi videoları sağlayabilir. Sunucu müşteri aslında meşru Apple aracılığıyla öğeyi satın emin olmak için, IAP makbuzları doğrulamak için kullanabileceğiniz bir API var.

Her zaman iPhone uygulaması IP adresini içeren sunucuya bir istek göndermek olabilir; , sonra sunucu üzerinde, sadece o IP erişimi verir indirmek için bir URL dönüş.

Server Product Model okuyun ve In App Alım Programlama Rehberi Verifying Store Receipts bölümleri. Bu oldukça güvenli bir şekilde bunu nasıl açıklar.

Ben verileri şifreleyerek iyi çalışıyor bulabilirsiniz. IPhone iPhone şifresini, sunucu üzerinde bu anahtarla şifrelemek, rasgele bir anahtar göndermek var. Kullanım AES, CBC modunda 128bit. Eğer daha iyi performans istiyorsanız dosyasının yalnızca bir bölümünü şifreleyerek düşünebilirsiniz, dosya üzerinde eşit biçimde yayılmasına blokları ile 10%, bu çıkan video kaydedilir kripto zaman vs izlemeye değer olmayacak bir değiş tokuş söylüyorlar.