Appel sécurisé avec l'API Visualforce Remoting (mise à jour)

L'API Visualforce Remoting utilise JavaScript pour appeler des méthodes dans des contrôleurs Apex directement depuis des pages Visualforce. Pour vous assurer que l'API est correctement sécurisée, la validation des appels est désormais plus stricte. Cette mise à jour est automatiquement appliquée dans la version Winter ’22.

Où : cette modification s'applique à Lightning Experience et à Salesforce Classic dans toutes les éditions.

Quand : cette mise à jour est disponible à compter de la version Spring ’21 et automatiquement appliquée dans les organisations de production avec Winter ’22. Cette mise à jour est appliquée les organisations sandbox avec la version Summer ’21. Pour recevoir la date de mise à niveau de la version majeure de votre instance, accédez à Statut Trust, recherchez votre instance, puis cliquez sur l'onglet de maintenance.

Pourquoi : afin d'améliorer la sécurité de l'API Remoting JavaScript Visualforce, cette mise à jour change le mode de création de jeton CSRF pour la variable globale Visualforce $RemoteAction. Cette validation ajoute une protection aux appels d'API distants par des utilisateurs invités. Elle valide également le paramètre {"apexType": "Object"}, utilisé par la variable globale Visualforce $RemoteAction, par rapport au paramètre de la méthode Apex, et renvoie une erreur si le paramètre apexType n'est pas valide. Cette validation empêche les utilisateurs de fournir des objets Apex auxquels ils n'ont pas accès ou qui ne satisfont pas le paramètre de la méthode Apex.

Comment : nous recommandons d'exécuter ces étapes de test dans un environnement sandbox afin d'évaluer l'impact de la mise à jour de version et de corriger les erreurs de validation avant l'activation automatique dans Winter ’22.
  1. Pour retrouver l'utilisation de l'API Remoting Visualforce, recherchez dans votre code d'application.
    L'API Remoting invoque des méthodes de contrôleur Apex avec une annotation @RemoteAction. Les méthodes de contrôleur Apex utilisent cette signature :
    @RemoteAction
    global static String myMethod(String inputArgument) { ... }
    Les pages Visualforce utilisent ce code JavaScript pour invoquer les méthodes de contrôle Apex :
    Visualforce.remoting.Manager.invokeAction(
      '{!$RemoteAction.MyController.myMethod}',
      myArgument,
      function(result, event){...}
      ...
  2. Dans Configuration, saisissez Mises à jour de version dans la case Recherche rapide, puis sélectionnez Mises à jour de version. Pour Activer l'application distante de Visualforce JavaScript, suivez les étapes de test, mais n'activez pas la mise à jour de version.
  3. Pour identifier les appels d'API Remoting Visualforce qui échouent à la validation, activez l'exécution test de la mise à jour de version. Testez manuellement toutes les pages qui utilisent Remoting, puis consultez les exceptions et les échecs de validation dans le journal de la console.
  4. Examinez chaque échec de validation et corrigez l'utilisation de l'API Remoting Visualforce dans votre code.

    Les messages d'erreur décrivent les échecs de validation et indiquent comment corriger les problèmes. Par exemple, si un message d'erreur indique que la valeur apexType ne satisfait pas le type d'argument de la méthode Apex, remplacez la valeur apexType par le type approprié.

  5. La résolution des fonctionnalités plus complexes n'est pas toujours aussi simple, ce qui vous oblige à reconcevoir des parties de votre application. Pour plus informations, consultez Declaring a Remote Method with Interface Parameters.

    Par exemple, si une valeur apexType est inaccessible, vous devez reconcevoir l'utilisation de l'API Remoting Visualforce afin d'empêcher les utilisateurs d'utiliser la valeur apexType non valide.

  6. Lorsque le test manuel est terminé, désactivez l'exécution test de la mise à jour de version, puis transférez le code modifié à votre organisation de production.
  7. Dans votre organisation de production, activez la mise à jour de version ou attendez son activation automatique dans la version Winter ’22.
    Remarque

    Remarque

    Toutes les modifications que vous apportez au code pendant les tests sont valides, que vous activiez immédiatement la mise à jour de version ou que vous attendiez son activation automatique.