Ces bonnes pratiques sont fournies à titre de références exemplaires. Évaluez vos implémentations de manière indépendante.
Communication avec les services XBOX
Utilisez l’API XBOX Services (XSAPI) pour les appels aux services XBOX. Elle repose sur les API HTTP et WebSocket de la plateforme, suit toutes les pratiques de sécurité recommandées et est disponible sur plusieurs plateformes. Consultez Prise en main des API XBOX Services.Communication avec les services PlayFab
Utilisez la bibliothèque GDK PlayFab XplatCPP. Elle suit les pratiques de sécurité recommandées, y compris l’authentification, et repose sur les API HTTP et WebSocket de la plateforme. Consultez la bibliothèque GDK PlayFab Azure privée et la documentation du SDK XplatCPP.Communication générale avec les services web
Sur le GDK, utilisez XCurl, libHttpClient ou WinHTTP. Microsoft les teste et les maintient activement.- XCurl impose automatiquement une validation complète des certificats SSL.
- libHttpClient est le plus adapté à la communication WebSocket.
- Utilisez toujours HTTPS / WSS. Limitez-vous à TLS 1.2 ou 1.3 uniquement.
Authentification des services web
Authentifiez les services web à l’aide de certificats SSL publics ancrés dans une autorité de certification reconnue par la plateforme. Consultez Microsoft Trusted Root Participants. WinHTTP / XCurl valident automatiquement les certificats. Les certificats auto-signés ou émis par une autorité de certification non prise en charge provoquent des erreurs d’authentification. Pendant le développement, vous pouvez remplacer ou assouplir ces vérifications : ne livrez jamais ces modifications dans les builds de production.Bonnes pratiques pour la pile HTTP
Si votre titre utilise directement WinHTTP ou une autre pile HTTP au lieu de xCurl, configurez explicitement la sécurité : les paramètres par défaut de xCurl ne s’appliquent pas automatiquement ailleurs.Validation des certificats et approbation
- Validez la chaîne de certificats complète.
- Validez le nom d’hôte du serveur, et pas seulement l’émetteur.
- Déterminez si la pile utilise le modèle d’approbation de la plateforme ou un ensemble d’approbation géré séparément.
Configuration du proxy
- Découvrez la configuration du proxy système lorsque cela est approprié.
- Transmettez explicitement les paramètres du proxy à la bibliothèque HTTP.
- Testez le trafic direct et le trafic via proxy (en particulier pour le débogage local).
Paramètres sécurisés par défaut à examiner
- Délais d’expiration de connexion et de requête
- Gestion des redirections
- Limites de taille des requêtes / réponses
- Comportement des versions HTTP (y compris les hypothèses sur HTTP/2)
- Masquage des en-têtes, jetons et URL dans la journalisation et la télémétrie
Liste de contrôle recommandée
- Le trafic de production utilise HTTPS ou WSS.
- La validation de la chaîne de certificats et du nom d’hôte est activée dans les builds de production.
- Le modèle d’approbation est défini et documenté.
- La découverte du proxy / la configuration explicite est prise en charge pour les flux de travail de débogage.
- Les échecs de certificat, les échecs de proxy et le comportement des délais d’expiration sont délibérément testés (pas seulement le scénario nominal).
Authentification du client
Authentifiez les clients GDK à l’aide du jeton d’authentification XSTS. Les services XBOX créent le jeton et fournissent les revendications d’utilisateur, de client et de privilèges. Les clients peuvent utiliser les jetons XSTS pour appeler les services de titre lorsque ceux-ci peuvent être validés de manière sécurisée. Conseils :- Configurez les revendications d’authentification XSTS dans Partner Center dans le cadre de la configuration du titre/service.
- N’envoyez pas directement depuis le client les informations d’utilisateur/client/privilèges (URL ou corps). Validez-les toujours via les revendications XSTS.
- Les jetons personnalisés de titre/éditeur sont autorisés, mais doivent reposer sur un flux d’authentification XSTS initial. Respectez le format JWT chiffré et l’expiration utilisés par XSTS.
GameService pour la validation XSTS.
Configuration des algorithmes pour les services web
Limitez TLS aux options robustes uniquement :- AES256 ou plus robuste
- Chiffrements CBC ou GCM
- SHA256 ou plus robuste
Génération de certificats SSL
Les certificats racines doivent être :- Soit une autorité de certification chaînée à un participant du Microsoft Trusted Root Program. Aucune configuration par titre n’est requise.
- Soit une autorité de certification Microsoft (y compris les certificats Azure utilisés dans les machines virtuelles et services Azure).
Documentation d’API associée
- Référence de l’API XCurl : options TLS, application du HTTPS uniquement, points d’accroche pour l’épinglage de certificats
- Référence libHttpClient : transport HTTPS/WebSocket sous XSAPI
- Référence REST XSAPI : requêtes web authentifiées par XSTS
- Référence XUser :
XUserGetTokenAndSignatureAsyncpour les requêtes web authentifiées
