這些最佳做法僅作為範例參考。請自行獨立評估您的實作。
XBOX 服務通訊
使用 XBOX Services API (XSAPI) 進行 XBOX 服務呼叫。它建置於平台 HTTP 和 WebSocket API 之上,遵循所有建議的安全性做法,並可在多個平台上使用。 請參閱開始使用 XBOX Services API。PlayFab 服務通訊
使用 PlayFab XplatCPP GDK 程式庫。它遵循建議的安全性做法 (包括驗證),並建置於平台 HTTP 和 WebSocket API 之上。 請參閱私人 Azure PlayFab GDK 程式庫和 XplatCPP SDK 文件。一般 Web 服務通訊
在 GDK 上請使用 XCurl、libHttpClient 或 WinHTTP。Microsoft 會主動測試並維護這些程式庫。- XCurl 會自動強制執行完整的 SSL 憑證驗證。
- libHttpClient 最適合用於 WebSocket 通訊。
- 一律使用 HTTPS / WSS。僅限使用 TLS 1.2 或 1.3。
Web 服務驗證
使用以平台認可之 CA 為根的公用 SSL 憑證來驗證 Web 服務。請參閱 Microsoft 信任的根參與者。 WinHTTP / XCurl 會自動驗證憑證。自我簽署或不支援 CA 的憑證會導致驗證錯誤。在開發期間,您可以覆寫或減少這些檢查,但絕對不要在發行組建中隨附這些變更。HTTP 堆疊最佳做法
如果您的遊戲直接使用 WinHTTP 或其他 HTTP 堆疊而非 xCurl,請明確設定安全性,因為 xCurl 的預設值在其他地方不會自動套用。憑證驗證與信任
- 驗證完整的憑證鏈結。
- 驗證伺服器主機名稱,而不只是簽發者。
- 決定堆疊要使用平台信任模型,還是另外管理的信任套件組合。
Proxy 設定
- 在適當時探索系統 Proxy 設定。
- 將 Proxy 設定明確傳遞給 HTTP 程式庫。
- 測試直接和透過 Proxy 的流量 (特別是本機偵錯時)。
要檢閱的安全預設值
- 連線和要求逾時
- 重新導向處理
- 要求 / 回應大小限制
- HTTP 版本行為 (包括 HTTP/2 假設)
- 標頭、權杖和 URL 的記錄與遙測遮蔽
建議的檢查清單
- 生產環境流量為 HTTPS 或 WSS。
- 發行組建中已開啟憑證鏈結和主機名稱驗證。
- 已決定並記錄信任模型。
- 支援 Proxy 探索 / 明確設定,以利偵錯工作流程。
- 已刻意測試憑證失敗、Proxy 失敗和逾時行為 (而不只是正常路徑)。
用戶端驗證
使用 XSTS 驗證權杖驗證 GDK 用戶端。XBOX 服務會建立權杖,並提供使用者、用戶端和權限宣告。當 XSTS 權杖可以被安全驗證時,用戶端可以使用它們來呼叫遊戲服務。 指引:- 在 Partner Center 中將 XSTS 驗證宣告設定為遊戲/服務設定的一部分。
- 不要直接從用戶端傳送使用者/用戶端/權限資訊 (URL 或本文)。一律透過 XSTS 宣告進行驗證。
- 允許使用遊戲/發行者的自訂權杖,但必須以初始的 XSTS 驗證流程為基礎。請遵循 XSTS 使用的加密 JWT 格式和到期時間。
GameService 範例。
Web 服務的演算法設定
將 TLS 限制為僅使用強式選項:- AES256 或更強
- CBC 或 GCM 加密
- SHA256 或更強
SSL 憑證產生
根憑證應為下列其中之一:- 鏈結至 Microsoft 信任的根計畫參與者的 CA。不需要針對每個遊戲進行設定。
- Microsoft CA (包括 Azure VM 和服務中使用的 Azure 憑證)。
相關 API 文件
- XCurl API 參考:TLS 選項、僅限 HTTPS 的強制執行、憑證關聯攔截點
- libHttpClient 參考:XSAPI 底層的 HTTPS/WebSocket 傳輸 - XSAPI REST 參考:經 XSTS 驗證的 Web 要求
- XUser 參考:用於已驗證 Web 要求的
XUserGetTokenAndSignatureAsync
