Reino: Security Features

Segurança de software não é o mesmo que software de segurança. Aqui, estamos interessados em tópicos como autenticação, controle de acesso, confidencialidade, criptografia e gestão de privilégios.

Access Control

Abstract
Executar uma instrução SOQL sem verificar as permissões do usuário pode permitir que um invasor modifique entradas não autorizadas.
Explanation
Vulnerabilidades de controle de acesso ocorrem quando um invasor pode acessar recursos restritos somente a usuários autorizados.

Por padrão, aplicativos Visualforce impõem automaticamente a segurança em nível de objeto (CRUD) e a segurança em nível de campo (FLS) quando os campos SObject e SObjects são usados. No entanto, se objetos e campos forem referenciados como tipos de dados genéricos, esses mecanismos não serão impostos, e verificações de controle de acesso precisarão ser implementadas programaticamente.

Exemplo 1: No exemplo de código a seguir, os campos são atualizados usando métodos setter personalizados e, portanto, exigem verificações de autorização.

<apex:page controller="accessControl">
<apex:pageBlock >
<apex:pageBlockSection >
<apex:outputText value="Survey Name: "/>
<apex:inputText value="{!surveyName}"/>
</apex:pageBlockSection>
<apex:pageBlockSection >
<apex:outputText value="New Name: "/>
<apex:inputText value="{!newSurveyName}"/>
</apex:pageBlockSection>
<apex:pageBlockSection >
<apex:commandButton value="Update" action="{!updateName}"/>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:page>

public String surveyName { get; set; }
public String newSurveyName { get; set; }
public PageReference updateName() {
Survey__c s = [SELECT Name FROM Survey__c WHERE Name=:surveyName];

s.Name = newSurveyName;
update s;

PageReference page = ApexPages.currentPage();
page.setRedirect(true);
return page;
}
References
[1] Salesforce Developers Technical Library Secure Coding Guidelines - Authorization and Access Control
[2] Salesforce Developers Technical Library Testing CRUD and FLS Enforcement
[3] Salesforce Developers Technical Library Enforcing CRUD and FLS
[4] Salesforce Developers Technical Library Visualforce Developers Guide - Standard Controllers
desc.structural.apex.access_control_update