界: Security Features

軟體安全性並非安全性軟體。我們關注驗證、Access Control、保密性、加密以及權限管理之類的主題。

Access Control

Abstract
在沒有檢查使用者權限的情況下執行 SOQL 陳述式可讓攻擊者修改未經授權的項目。
Explanation
當攻擊者存取僅限授權使用者存取的資源時,會出現存取控制弱點。

依預設,使用 SObjects 和 SObject 欄位時,Visualforce 應用程式會自動強制物件層級安全性 (CRUD) 和欄位層級安全性 (FLS)。但是,如果物件和欄位做為一般資料類型供參照時,則不會強制這些機制,並且必須以程式設計方式實作存取控制檢查。

範例 1:在以下程式碼範例中,使用自訂 setter 方法更新欄位,因此需要授權檢查。

<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