界: Security Features

ソフトウェアのセキュリティは、セキュリティ ソフトウェアではありません。ここでは、認証、アクセス制御、機密性、暗号化、権限管理などのトピックについて説明します。

Access Control

Abstract
ユーザー権限を確認しないで SOQL ステートメントを実行すると、攻撃者が権限のないエントリを変更できるようになることがあります。
Explanation
Access Control の脆弱性は、攻撃者が、承認されたユーザーに限定されたリソースにアクセスできる場合に発生します。

SObjects および SObject フィールドが使用されている場合、Visualforce アプリケーションはデフォルトでオブジェクトレベルのセキュリティ (CRUD) およびフィールドレベルのセキュリティ (FLS) を自動的に適用します。ただし、オブジェクトおよびフィールドが汎用データ タイプとして参照されている場合、これらのメカニズムは適用されず、Access Control チェックをプログラムで実装する必要があります。

例 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