Reino: Security Features

La seguridad de un software no es un software de seguridad. Nos preocupamos de cuestiones como la autenticación, el control de acceso, la confidencialidad, la criptografía y la gestión de privilegios.

Access Control

Abstract
La ejecución de una instrucción SOQL sin comprobar los permisos del usuario puede permitir a un atacante modificar entradas no autorizadas.
Explanation
Se producen vulnerabilidades en el control de acceso cuando un atacante puede acceder a los recursos a los que solo tienen acceso los usuarios autorizados.

De forma predeterminada, las aplicaciones de Visualforce exigen automáticamente Seguridad a nivel de objeto (CRUD) y Seguridad a nivel de campo (FLS) si se utilizan los campos SObjects y SObject. Sin embargo, si se hace referencia a los objetos y los campos como tipos de datos genéricos, estos mecanismos no son obligatorios y las comprobaciones del control de acceso deben implementarse mediante programación.

Ejemplo 1: en el siguiente ejemplo de código, los campos se actualizan mediante métodos setter personalizados y, por lo tanto, se requieren comprobaciones de autorización.

<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