La sécurité est une considération importante pour les applications.
Dès le départ, brainCloud a été conçu dans un souci de sécurité. Notre API client garantit que :
Tous les appels nécessitent une connexion client authentifiée
Tous les appels sont cryptés (via SSL)
Tous les messages sont marqués d'un code de contrôle (basé sur la clé secrète de l'application) pour éviter toute falsification.
Tous les messages ont également des identifiants de paquets pour empêcher les attaques par relecture
Les données appartiennent aux utilisateurs et l'accès est protégé via ACL (listes de contrôle d'accès)
De plus, nous limitons également activement certaines API à être uniquement appelables par cloud code (par exemple, les API de devises, la création de classements, etc.).
Bien entendu, toutes les applications ne sont pas identiques et vous souhaiterez peut-être restreindre l'accès à des API supplémentaires uniquement à partir du cloud code.
Bien que cela ne soit pas directement intégré à la solution, le puissant mécanisme d'API Hook de brainCloud permet de le faire ! Voici comment :
Arrière-plan
Pré-hooks
Les pré-hooks sont des scripts cloud spécifiques configurés pour être appelés immédiatement avant un appel d'API spécifique. Ils permettent de vérifier les paramètres envoyés à un appel d'API, et potentiellement de les modifier et/ou de rejeter l'appel si le script le souhaite.
Drapeau de Cloud Code
Chaque appel brainCloud reçoit quelques paramètres standard lors de son appel, comme le service et le fonctionnement de la méthode appelée. Un paramètre supplémentaire, automatiquement inséré par le répartiteur d'API, est l'indicateur ccCall
. Cet indicateur indique true
si la méthode d'API (ou le script) est appelée depuis un script de Cloud Code ou false
depuis un client.
Le script !
Créez un script appelé PREHOOK_DisallowCallFromClient
avec le contenu suivant :
Description
Vérifie si l'appel provient du client et, si c'est le cas, l'interdit. Utilise l'indicateur spécial ccCall pour déterminer si l'appel a été effectué via le cloud code.
Paramètres
{
"service": "aService",
"operation": "AN_OPERATION",
"message": {"ccCall": false },
"parms": {}
}
Code
var results = {};
// Par défaut, tout va bien - dites au système de continuer le traitement
results.status = 200;
// Si cet appel ne provient pas du cloud code, enregistrez-le et interdisez-le.
if ( ! data.message.ccCall ) {
// Le remplacement du statut interdit le traitement de l'appel.
results.status = 403;
results.reasonCode = 99999;
results.errorMessage = "VIOLATION: Not allowed to call "
+ data.service + ":" + data.operation + " from client.";
// Enregistrez également ce qui s'est passé...
var _log = bridge.getLogServiceProxy();
var logMsg = "VIOLATION: Protected API ("
+ data.service + ":" + data.operation
+ ") called from client with profileId "
+ bridge.getProfileId() + ". Disallowed.";
_log.logWarning( logMsg, JSON.stringify( data.message ) );
}
// retourne les résultats
results;
Le brancher
Vous pouvez associer ce script à n'importe quel appel d'API.
Pour cela :
Accéder à Conception > Cloud Code > Points d'encrage d'API
Cliquez sur [+ Nouveau Point D'encrage D'API...] pour afficher la boîte de dialogue Créer Point d'encrage d'API
Choisissez le service et l'opération auxquels vous souhaitez joindre le script
Assurez-vous de choisir "Pré" dans le sélecteur Pré/Post
Et enfin choisissez votre script -
PREHOOK_DisallowCallFromClient
.Vous pouvez laisser les paramètres du hook vides - notre hook ne les utilise pas.
Cliquez sur [Sauvegarder] pour mettre votre hook en place.
Et voilà : désormais, l'appel d'API ne peut être appelé qu'à partir du cloud code !
Bonne chance !
Vos commentaires sont importants pour nous. Veuillez noter cette réponse ci-dessous. Merci !