Fermer

février 3, 2025

Apex Security Best Practices for Salesforce Applications / blogs / perficient

Apex Security Best Practices for Salesforce Applications / blogs / perficient


Comme les entreprises comptent de plus en plus sur Salesforce pour gérer leurs données critiques, la garantie de la sécurité des données est devenue plus importante que jamais. Apex, le langage de programmation propriétaire de Salesforce, s’exécute en mode système par défaut, en contournant la sécurité au niveau des objets et du champ. Pour protéger les données sensibles, les développeurs doivent appliquer des mesures de sécurité strictes.

Ce blog explorera Meilleures pratiques de sécurité suprêmey compris l’application des règles de partage, les autorisations au niveau du champ et l’application de l’accès des utilisateurs pour protéger vos données Salesforce.

Pourquoi la sécurité Apex est essentielle pour vos applications Salesforce

La capacité d’Apex à contourner les paramètres de sécurité met le fardeau sur les développeurs pour implémenter Salesforce Security pratiques. Sans ces protections, votre application Salesforce pourrait exposer involontairement des données sensibles aux utilisateurs non autorisés.

En suivant les meilleures pratiques telles que l’application Règles de partagevalider les entrées et utiliser requêtes SOQL appliquées à la sécuritévous pouvez réduire considérablement le risque de violations de données et vous assurer que votre application adhère aux normes de sécurité de la plate-forme.

Appliquer les règles de partage dans Apex pour maintenir la sécurité des données

Les règles de partage sont essentielles pour contrôler l’accès aux données dans Salesforce. APEX ne respecte pas automatiquement ces règles de partage, sauf en passant explicitement de le faire. Voici comment les appliquer dans votre code APEX:

En utilisant with sharing Dans les classes Apex

  • avec partage: Assure que les paramètres de partage de l’utilisateur actuels sont appliqués, empêchant l’accès non autorisé aux enregistrements.
  • sans partage: Ignore les règles de partage et est souvent utilisé pour les tâches administratives ou les opérations au niveau du système lorsque l’accès ne doit pas être restreint.
  • Partage hérité: Hérite des paramètres de partage de la classe d’appel.

Meilleure pratique: Utilisez toujours avec partage Sauf si vous avez explicitement besoin de remplacer les règles de partage pour des cas d’utilisation spécifiques. Cela garantit que votre code est conforme à Salesforce Security Normes.

Exemple

public class AccountHandlerWithSharing {
    public void fetchAccounts() {
        // Ensures that sharing settings are respected
        List<Account> accounts = [SELECT Id, Name FROM Account];
    }
}
public class AccountHandlerWithoutSharing {
    public void fetchAccounts() {
        // Ignores sharing settings and returns all records
        List<Account> accounts = [SELECT Id, Name FROM Account];
    }
}

Appliquer les autorisations de niveau d’objet et de champ dans Apex

Apex fonctionne dans un Contexte système par défautcontournant la sécurité au niveau des objets et du champ. Vous devez appliquer manuellement ces mesures de sécurité pour vous assurer que votre code respecte les droits d’accès utilisateur.

En utilisant WITH SECURITY_ENFORCED Dans les requêtes SOQL

Le Avec Security_enforced Le mot-clé garantit que Salesforce effectue une vérification d’autorisation sur les champs et les objets de votre requête SOQL, garantissant que seules les données accessibles sont renvoyées.

Exemple

List<Account> accounts = [
    SELECT Id, Name
    FROM Account
    WHERE Industry = 'Technology'
    WITH SECURITY_ENFORCED
];

Cette approche garantit que Seuls champs et objets auxquels l’utilisateur actuel peut accéder sont retournés dans vos résultats de requête.

En utilisant le stripInaccessible Méthode pour filtrer les données inaccessibles

Salesforce fournit le stripinaccessible Méthode, qui supprime les champs ou les relations inaccessibles des résultats de la requête. Il aide également à prévenir les erreurs d’exécution en garantissant qu’aucun champ inaccessible n’est utilisé dans les opérations DML.

Exemple

En utilisant strippessable s’assure que tous les champs ou relations auxquels l’utilisateur ne peut accéder Compte enregistrer avant tout traitement supplémentaire.

Partage géré par Apex: partager par programme les enregistrements

Le partage géré par Apex peut être un outil puissant lorsque vous avez besoin de gérer l’accès à l’enregistrement dynamiquement. Cette fonctionnalité permet aux développeurs de partager par programmation des enregistrements avec des utilisateurs ou des groupes spécifiques.

Exemple

public void shareRecord(Id recordId, Id userId) {
    CustomObject__Share share = new CustomObject__Share();
    share.ParentId = recordId;
    share.UserOrGroupId = userId;
    share.AccessLevel="Edit"; // Options: 'Read', 'Edit', or 'All'
    insert share;
}

Ce code vous permet de partager un enregistrement d’objet personnalisé avec un utilisateur spécifique et de les accorder Modifier accéder. Le partage géré par Apex permet des contrôles plus flexibles et dynamiques de partage d’enregistrements.

Conseils de sécurité pour le développement de l’apex et de la foudre

Voici quelques conseils critiques pour améliorer la sécurité de vos applications Apex et Lightning:

Évitez les identifiants de codage dur

Les ID Salesforce de codage rigide, tels que les ID d’enregistrement ou les ID de profil, peuvent introduire des vulnérabilités de sécurité et réduire la flexibilité du code. Utiliser récupération dynamique pour récupérer des identifiants et envisager d’utiliser Paramètres personnalisés ou Métadonnées personnalisées pour des configurations plus flexibles et sécurisées.

Valider les entrées des utilisateurs pour empêcher les menaces de sécurité

Il est essentiel de désinfecter toutes les entrées des utilisateurs pour empêcher les menaces comme Injection de soql et Script inter-sites (XSS). Utilisez toujours requêtes paramétrées et échapper aux personnages si nécessaire.

Utiliser stripInaccessible Dans les opérations DML

Pour empêcher le traitement des champs inaccessibles, utilisez toujours le strippessable Méthode lors de la gestion des enregistrements contenant des champs limités par les autorisations utilisateur.

Examiner les contextes de partage pour assurer la sécurité des données

Assurez-vous d’utiliser le contexte de partage correct pour chaque classe ou déclencheur. Évitez d’accorder un accès inutile en utilisant avec partage pour la plupart de vos cours.

Écrire des méthodes de test pour simuler les autorisations des utilisateurs

Écriture de tests qui simulent divers rôles utilisateur en utilisant System.Runas () est crucial pour vous assurer que votre code respecte les règles de partage, les autorisations au niveau du champ et d’autres paramètres de sécurité.

Conclusion: Amélioration de la sécurité Salesforce avec Apex

Exécution Meilleures pratiques de sécurité suprême est essentiel pour protéger vos données Salesforce. Que vous appliquiez des règles de partage, en respectant les autorisations au niveau du champ ou en gérant par programme le partage d’enregistrements, ces pratiques aident à garantir que seuls les utilisateurs autorisés peuvent accéder aux données sensibles.

Lors de la création de vos applications Salesforce, priorisez toujours la sécurité par:

  • En utilisant avec partage dans la mesure du possible.
  • Exécution Requêtes de la sécurité.
  • Des outils comme strippessable Peut être utilisé pour filtrer les champs inaccessibles.

En adhérant à ces pratiques, vous pouvez construire Secure Salesforce Applications qui répondent aux exigences de l’entreprise et garantissent l’intégrité et la conformité des données.

Lire plus approfondie sur Salesforce Security






Source link