數位版權管理 (DRM) 保護層級
PC 上的 Microsoft Store 授權系統只能防範最基本的攻擊。對於需要保護的內容,我們建議您不要只依賴它。以下是可針對更進階的攻擊增加保護層的幾個步驟。- 在遊戲啟動時由遊戲起始的授權檢查
- 遊戲授權檢查的防竄改保護
- 使用授權權杖進行服務端授權驗證
基本授權檢查
我們建議想要 DRM 保護的任何遊戲至少加入基本授權檢查。下列程式碼範例示範執行此檢查的基本實作,即使您未使用任何其他 Gaming Runtime 相關的 API 呼叫也適用。您可以將程式碼加入啟動路徑,並加入在授權檢查失敗時顯示的特定 UI。透過 XBOX Game Pass 授與的授權會傳回
isActive = true,與購買的授權相同。XStoreGameLicense 結構不包含可識別授權取得方式的欄位,因此用戶端授權檢查無法區分 Game Pass 存取和直接購買。若要做出此區分,請使用從您的服務偵測 XBOX Game Pass 訂閱存取中所述的服務端查詢。非 Microsoft 防竄改保護
雖然基本授權檢查範例提供了一些保護,但攻擊者常會修改遊戲的可執行檔來略過此類檢查。因此,保護遊戲的下一步是使用非 Microsoft 的防竄改產品來防止這類攻擊。GDK PC 遊戲有可用的選項。請與您的防竄改廠商合作,取得如何將此保護納入遊戲的詳細指示。服務端授權驗證
防竄改保護在遊戲發行時能有效保護遊戲,但最終其中許多保護都會被破解。若要更進一步,支援線上功能的遊戲可以執行服務端授權驗證檢查,並阻擋許多用戶端攻擊。如需詳細資訊,請參閱授權權杖概觀。 基本概要如下。- 遊戲服務向遊戲用戶端要求授權權杖,並包含由遊戲服務產生、代表該唯一要求的 GUID。
- 用戶端接著呼叫用戶端 API XStoreQueryLicenseTokenAsync。
- API 會呼叫授權服務,並判斷遊戲是否應將授權傳回給該使用者。
- 如果 API 取得有效授權,就會傳回包含服務提供之工作階段識別碼的已簽署授權權杖。
- 用戶端接著將授權權杖傳回給遊戲服務。
- 遊戲服務驗證簽章,確保授權來自 Microsoft Store 且未經修改。
- 遊戲服務接著檢查工作階段 GUID 是否與步驟 1 中傳遞給用戶端的 GUID 相符。
- 遊戲服務接著便可信任權杖中的授權資訊是有效的。
