계: Security Features

소프트웨어 보안은 보안 소프트웨어가 아닙니다. 여기서는 인증, 액세스 제어, 기밀성, 암호화, 권한 관리 등의 항목에 대해 설명합니다.

Access Control

Abstract
사용자 권한을 확인하지 않고 SOQL 문을 실행하면 공격자가 권한이 없는 항목을 수정할 수 있습니다.
Explanation
Access control 취약점은 공격자가 인증된 사용자에게만 제한된 리소스에 액세스할 수 있을 때 발생합니다.

기본적으로, SObjects 및 SObject 필드가 사용되는 경우 Visualforce 응용 프로그램은 개체 수준 보안(CRUD) 및 필드 수준 보안(FLS)을 자동으로 적용합니다. 하지만 개체 및 필드가 일반 데이터 유형으로 참조되는 경우, 이런 메커니즘은 적용되지 않으며 access control 검사는 프로그래밍 방식으로 구현되어야 합니다.

예제 1: 다음 코드 예제에서, 필드는 사용자 지정 세터 메서드를 사용하여 업데이트되므로, 권한 부여 검사가 필요합니다.

<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