Hello,大家好。
      我是目前研究出海投放&變現(xiàn)業(yè)務(wù)的SL。

      《三方設(shè)防巧遮天,諸家妙法辨忠奸》
      《金鎖銀關(guān)護正道,秘法奇謀斷妄行》
      最近重溫了《三俠五義》,說話古風(fēng)古氣的,哈哈。
      抽空又來更新了,越來越懶了,而且感覺也沒得寫了,之后可能有空更新一下!最近看了粉絲們的評論區(qū)和私信,發(fā)現(xiàn)大家在防護驗證的知識體系還是缺少一些基本功。除了我們內(nèi)部自己的平臺驗證之外,其實不同的應(yīng)用商店也都提供了一些基礎(chǔ)功能幫助我們驗證流量。我們可以用起來。對于營銷小伙伴了解一些也是很不錯的。
      所以這期總結(jié)一下目前常見的平臺都如何配置這些套件和功能,這個功能可以自己做,也可以交給MMP(如果你沒有這個精力和資源的話,算是省心省力,沒有打廣告哦)。
      分三個平臺講:Google Apple Amazon

      Google License Verification Library(LVL)
      Google License Verification Library (LVL) 的主要作用是驗證應(yīng)用的合法授權(quán),以防止未經(jīng)授權(quán)的安裝。為了防作弊,Google LVL通過Google Play License Server進行授權(quán)驗證,應(yīng)用啟動時會調(diào)用LVL,請求GP服務(wù)器進行授權(quán)驗證。在GP的服務(wù)器返回驗證結(jié)果(LICENSED、NOT_LICENSED或ERROR)后,應(yīng)用會根據(jù)驗證的結(jié)果決定是否允許此次運行。
      參考官網(wǎng)文檔:
      https://developer.android.com/google/play/licensing/server-side-verification
      https://developer.android.google.cn/google/play/licensing/client-side-verification.html#app-publishing
      為了防止破解或偽造授權(quán)信息,LVL采用了以下安全措施:
      (1) 響應(yīng)數(shù)據(jù)簽名
      Google Play的服務(wù)器返回的授權(quán)響應(yīng)帶有數(shù)字簽名,使用Google私鑰加密。作弊渠道無法偽造服務(wù)器響應(yīng),因為他們無法偽造Google的簽名。在本地應(yīng)用中,LVL 需要用GP提供的公鑰驗證簽名的真實性。
      String signedData = response.getSignedData();?//?Google Play 返回的授權(quán)數(shù)據(jù)String signature = response.getSignature(); ?//?Google Play 返回的簽名boolean isValid = verifySignature(signedData, signature, PUBLIC_KEY);if?(isValid) {? ? // 授權(quán)通過}?else?{? ? // 可能是偽造的授權(quán)信息,拒絕訪問}
      (2) 隨機化驗證請求
      Google LVL在每次請求時會加入隨機數(shù) (nonce),防止重放攻擊(Replay Attack)。這樣,即使作弊渠道試圖緩存上一次的授權(quán)響應(yīng)并重復(fù)使用,系統(tǒng)仍然能檢測到。
      long?nonce =?new?SecureRandom().nextLong();?// 生成隨機 noncesendLicenseRequest(nonce);
      (3) 響應(yīng)內(nèi)容混淆
      Google LVL采用了Base64編碼和一定的混淆技術(shù),防止黑客直接篡改授權(quán)數(shù)據(jù)。攻擊者不能直接修改響應(yīng),否則簽名驗證會失敗。
      (4) 代碼混淆與安全性增強
      ProGuard/R8:LVL推薦使用ProGuard或R8來混淆代碼,防止黑客反編譯應(yīng)用并繞過授權(quán)驗證。
      自定義驗證邏輯:Google 建議開發(fā)者不要直接使用 LVL 提供的默認實現(xiàn),而是修改和混淆授權(quán)邏輯,使得破解難度提高。

      除了LVL自帶的機制,我還建議開發(fā)者結(jié)合Google Play Integrity API進行更嚴格的安全檢查。

      當(dāng)然MMP平臺也提供了一些簡化版本的服務(wù),我們以Appsflyer為例:
      廣告主需要將配置好的property同步給Appsflyer的CSM。Appsflyer的CSM將會開啟測試模式(只標記不檢出),如果數(shù)據(jù)穩(wěn)定的話,就可以同步到正式版了。
      有兩個需要注意的點??:
      1.Appsflyer需要購買Protect360服務(wù)后才能夠開啟驗證。
      2.Appsflyer將這類型Fraud標記的原因算作Bots。
      參考官網(wǎng)文檔:
      https://support.appsflyer.com/hc/en-us/articles/17329535522961-Setting-up-the-Google-License-Verification-Library-LVL

      Apple App Store install validation
      官方說法如下:Apple App Store Install Validation是一種驗證iOS應(yīng)用的安裝來源和合法性的機制,主要用于防止盜版、偽造安裝、未經(jīng)授權(quán)的運行等情況。它可以確保應(yīng)用只在 App Store下載和安裝,而不是通過越獄設(shè)備、第三方商店或企業(yè)簽名的方式繞過授權(quán)。
      蘋果沒有提供SDK,Apple是利用自己的生態(tài)完成驗證。
      主要包括以下三個環(huán)節(jié):
      (1)Receipt Validation(收據(jù)驗證)
      每個應(yīng)用都有一個receipt,用于驗證應(yīng)用來源以及是否合法安裝,以及是否有合法的內(nèi)購。該收據(jù)包含設(shè)備ID、購買信息、Bundle ID等信息,并由Apple簽名。我們可以在應(yīng)用啟動時驗證收據(jù),確保應(yīng)用是從Apple下載的,而不是從第三方來源sideload安裝的。一般收據(jù)會存儲在這里:
      /var/mobile/Applications/{App?UUID}/StoreKit/sandboxReceipt
      那么我們就可以用服務(wù)器在線驗證:
      import?requestsimport?base64
      # 讀取 receipt 文件with?open("receipt",?"rb")?as f:? ? receipt_data = base64.b64encode(f.read()).decode()
      # 發(fā)送到 Apple 服務(wù)器驗證response = requests.post("https://buy.itunes.apple.com/verifyReceipt", json={? ??"receipt-data": receipt_data,? ??"password":?"your_shared_secret"})
      # 解析返回的 JSON 結(jié)果print(response.json())
      (2) App Store Server API(防止假安裝 & 內(nèi)購欺詐)
      用于檢測應(yīng)用安裝來源,并防止黑客利用偽造安裝數(shù)據(jù)獲取獎勵(如廣告歸因作弊)。Apple提供App Store Server API,我們可以使用getTransactionHistory或getRefundHistoryAPI 來檢查用戶是否真的從應(yīng)用下載并購買了應(yīng)用或訂閱。這個API不會被篡改,可以有效檢測假裝安裝或偽造支付信息的情況。
      (3) Device Integrity Checks(設(shè)備完整性檢查)
      用于檢查設(shè)備是否越獄(Jailbroken),并檢測是否運行在模擬器或被 Hook。
      func?isDeviceJailbroken() -> Bool?{? ??let?paths = ["/Applications/Cydia.app",?"/Library/MobileSubstrate/MobileSubstrate.dylib",? ? ? ? ? ? ? ? ?"/bin/bash",?"/usr/sbin/sshd",?"/etc/apt"]? ??for?path?in?paths {? ? ? ??if?FileManager.default.fileExists(atPath: path) {? ? ? ? ? ??return?true? ? ? ? }? ? }? ??return?false}

      Amazon Digital Rights Management API
      Amazon沒有直接對應(yīng)Google License Verification Library (LVL)的官方SDK,但Amazon提供了Appstore SDK,其中的DRM (Digital Rights Management) API可以實現(xiàn)類似的功能。它允許廣告主檢查應(yīng)用是否是通過Amazon Appstore合法下載的,并防止盜版或未經(jīng)授權(quán)的使用。(可以重點防治某家!!!)

      首先,我們需要集成Amazon Appstore SDK,在應(yīng)用中添加 Amazon 提供的Appstore SDK(可從 Amazon Developer Console 下載)。
      友情提供鏈接?:
      https://developer.amazon.com/zh/docs/appstore-sdk/integrate-appstore-sdk.html
      然后在代碼中調(diào)用DRM API,就可以實現(xiàn)通過LicenseVerifier進行驗證了:
      import?com.amazon.device.drm.LicensingService;import?com.amazon.device.drm.model.LicenseResponse;import?com.amazon.device.drm.LicensingListener;
      public?class?MyActivity?extends?Activity?{? ??@Override? ??protected?void?onCreate(Bundle savedInstanceState) {? ? ? ??super.onCreate(savedInstanceState);? ? ? ??LicensingService.verifyLicense(new?LicensingListener() {? ? ? ? ? ??@Override? ? ? ? ? ??public?void?onLicenseValidated(LicenseResponse licenseResponse) {? ? ? ? ? ? ? ??if?(licenseResponse.getLicenseStatus() ==?LicenseResponse.LicenseStatus.LICENSED) {? ? ? ? ? ? ? ? ? ??// 授權(quán)成功? ? ? ? ? ? ? ? } else {? ? ? ? ? ? ? ? ? ? // 未授權(quán)(盜版、無效賬戶等)? ? ? ? ? ? ? ? }? ? ? ? ? ? }? ? ? ? });? ? }}
      之后把我們的應(yīng)用已上傳到Amazon Appstore,并啟用了DRM保護,就完成了全部操作啦。
      為了防止破解或偽造授權(quán)信息,DRM采用了以下安全措施:
      (1) 服務(wù)器簽名驗證
      Amazon DRM服務(wù)器的響應(yīng)包含簽名數(shù)據(jù),并使用Amazon的私鑰加密。應(yīng)用必須用Amazon提供的公鑰驗證返回數(shù)據(jù)的真實性,防止偽造授權(quán)信息。
      (2) 設(shè)備綁定&賬戶驗證
      DRM授權(quán)信息與用戶的Amazon賬戶綁定,而不是僅僅存儲在本地設(shè)備上。每次驗證時,Amazon服務(wù)器會檢查當(dāng)前設(shè)備是否屬于該賬戶,防止拷貝授權(quán)數(shù)據(jù)到其他設(shè)備使用。
      *獨有*
      (3) 授權(quán)數(shù)據(jù)加密&反篡改
      Amazon DRM SDK會加密存儲授權(quán)信息,并采用校驗機制,防止作弊渠道手動修改本地授權(quán)數(shù)據(jù)。如果檢測到數(shù)據(jù)被篡改,應(yīng)用可以拒絕運行。
      當(dāng)然,如果要驗證IAP的話,也可以用Amazon IAP (In-App Purchasing) 進行二次授權(quán)檢查,確保購買驗證的安全性。

      好了,今天的內(nèi)容就到這里。
      Bye!
      關(guān)注我,獲取更多廣告投放變現(xiàn)知識!


      點贊(19) 打賞

      評論列表 共有 0 條評論

      暫無評論

      服務(wù)號

      訂閱號

      備注【拉群】

      商務(wù)洽談

      微信聯(lián)系站長

      發(fā)表
      評論
      立即
      投稿
      返回
      頂部