𝗬𝗼𝘂𝗿 𝗔𝗽𝗲𝘅 𝗠𝗶𝗴𝗵𝘁 𝗥𝗲𝘁𝘂𝗿𝗻 𝗙𝗲𝘄𝗲𝗿 𝗥𝗲𝗰𝗼𝗿𝗱𝘀 𝗶𝗻 𝗦𝘂𝗺𝗺𝗲𝗿 '𝟮𝟲
Salesforce Summer '26 (API v67.0) introduce una modifica importante ad Apex. Questa modifica può alterare i risultati del tuo codice senza generare errori.
Per anni, Apex è stato eseguito in system mode per impostazione predefinita. Ciò significava che SOQL, SOSL e DML ignoravano i permessi dell'utente e le sharing rules. Il tuo codice poteva mostrare dati a utenti che non avrebbero dovuto vederli.
Nella versione API v67.0, l'impostazione predefinita si inverte. Le operazioni sul database ora vengono eseguite in user mode.
Cosa cambia nella v67.0:
• SOQL, SOSL e DML applicano i permessi dell'utente e le sharing rules per impostazione predefinita. • Le classi senza una dichiarazione di sharing ora utilizzano "with sharing" come predefinito. • "WITH SECURITY_ENFORCED" viene rimosso. Devi utilizzare "WITH USER_MODE" al suo posto. • I trigger vengono sempre eseguiti in system mode.
Questa modifica è legata alla versione API della tua classe. Le tue vecchie classi rimarranno invariate finché non le aggiornerai alla 67.0. Questo ti permette di controllare la migrazione.
Attenzione a questi problemi silenziosi:
- Meno record nelle query: Una query potrebbe restituire 40 righe invece di 500 perché l'utente non ha l'accesso necessario. Ciò causa totali errati e report imprecisi.
- Errori di compilazione: "WITH SECURITY_ENFORCED" non sarà possibile compilarlo nella nuova versione.
- Errori di integrazione: Gli utenti di integrazione potrebbero perdere l'accesso ai dati necessari per i job automatizzati.
- Modifiche allo sharing: Le classi che facevano affidamento sull'assenza di una dichiarazione di sharing ora applicheranno lo sharing.
Come migrare in sicurezza:
- Inventaria il tuo codice: Cerca "WITH SECURITY_ENFORCED" e le classi senza dichiarazioni di sharing.
- Testa in una sandbox: Aggiorna prima le classi ad alto rischio, come i controller e gli endpoint REST.
- Usa System.runAs(): Non fidarti solo del superamento dei test. Testa con utenti con permessi limitati per verificare la visibilità dei dati.
- Sii intenzionale: Usa "SYSTEM_MODE" o "without sharing" solo quando hai una ragione specifica.
Effettuare queste modifiche ora previene bug silenziosi in produzione in futuro.
Community di apprendimento opzionale: https://t.me/GyaanSetuAi