Native DML code executes in system context by default, which ignores the current user’s object permissions, field-level security (FLS), and sharing rules. In practice, this allows your code to read, update, or delete records and fields that the user wouldn’t normally have access to in the UI or API. If you don’t explicitly add CRUD/FLS and sharing checks, you risk exposing or modifying sensitive data — for example, letting a user indirectly change ownership, flip a restricted flag, or view confidential fields.
When using DML statement, always check if you could not implement this code using traditional CRUD operations.
Non-Compliant Code Examples
Account acc = new Account(External_Id__c = 'EX123', Name = 'Acme Global');
upsert acc External_Id__c; // specify external Id field
Account acc = [SELECT Id FROM Account WHERE Name = 'Acme Corp Updated' LIMIT 1];
delete acc;
Account acc = new Account(Name = 'Acme Corporation');
insert acc;
Account acc = [SELECT Id, Name FROM Account WHERE Name = 'Acme Corporation' LIMIT 1];
acc.Name = 'Acme Corp Updated';
update acc;
원활한 통합. Datadog Code Security를 경험해 보세요
Datadog Code Security
이 규칙을 사용해 Datadog Code Security로 코드를 분석하세요
규칙 사용 방법
1
2
rulesets:- apex-security # Rules to enforce Apex security.
리포지토리 루트에 위의 내용을 포함하는 static-analysis.datadog.yml을 만듭니다
무료 IDE 플러그인을 사용하거나 CI 파이프라인에 Code Security 검사를 추가합니다