PR

【Salesforce】ゲストユーザ向けの安全なフォーム実装

blog-eyecatch-guest-s Salesforce
この記事は約3分で読めます。
記事内に広告が含まれています。

Salesforce のゲストユーザ問題 (*1) が一時世間を賑わせたこともあり、不特定多数のユーザに公開するコンテンツを持つエクスペリエンスサイトを実装する際はとても神経を尖らせます。

(*1) ゲストユーザに対して不適切な権限・設定を行なっていたことにより、情報漏洩に発展した問題

特に、入力フォームを外部に公開するサイトでは、オブジェクトの参照権限をゲストユーザに付与しているケースも多いでしょう。

私個人としては、ゲストユーザ向けのフォームはLWCで実装することをお勧めします。

LWCでフォームを実装する理由

一番の理由は、「エクスペリエンスサイト」(特に LWR テンプレート)とのシナジーがあることです。

Visualforce はエクスペリエンスサイトに適していない

Aura, LWR といった Experience Cloud で提供される標準テンプレートの多くは、Visualforce での実装に適していません。

ビルダー上で配置できる Visualforce コンポーネント はありますが、サイト上では <iframe> として表示されます。推奨できるソリューションとは言えないでしょう。

スポンサーリンク

Aura コンポーネントは公式が推奨していない

Salesforce 公式の Developer Guide では以下のような案内が出ています。

Lightning Web Components でサポート対象外の機能が必要でなければ、常に Lightning Web コンポーネントを選んでください。

Lightning Web Components または Aura の選択方法

公式が LWC を原則利用するように案内を出している以上、Aura を推奨するつもりはありません。

特に、今回言及しているようなフォームの実装であれば、基本的には LWC でサポート対象外の機能を使う場面はほとんどないでしょう。

LWR テンプレートを利用する選択肢を残す

LWR テンプレートではそもそも LWC によるカスタムコンポーネントが前提とされています。

Aura, Visualforce のいずれも利用できないため、LWR テンプレートを利用する方針であれば LWC で実装しましょう。

今後開発するのであれば、Salesforce 自体が力を入れている LWC で実装するのが無難です。

スポンサーリンク

ゲストユーザに与える権限を狭める設計

フォームの実装となれば、オブジェクトの新規・参照権限あたりが必要に見えます。

しかし、ゲストユーザにオブジェクトの権限を与えるのは少し怖いです。

そのため、以下のような設計を個人的によく行います。

具体的には、フォームのレコードの格納先のオブジェクト権限は与えません。

LWC はオブジェクト項目と紐づかない input 項目で構築し、Apex(Controller)に値を渡します。

Controller は with sharing で実装し、実際にオブジェクトへアクセスするクラスを without sharing で実装します。このクラスを Controller から呼び出すことで、オブジェクト権限をゲストユーザに付与する必要がなくなります。

スポンサーリンク

おわりに

Experience Cloud のビルダーによるサイト構築は、ドラッグ&ドロップ中心の設定で簡単に実現できるのが良い点です。

一方で、ゲストユーザも利用するサイトの構築は慎重に行う必要がありますね。

標準のコンポーネントだと、オブジェクトのフォームを利用するには権限付与が必要になります。

実装コストは少し上がりますが、今回紹介したように LWC を利用する構成はセキュリティの観点では非常におすすめです。

スポンサーリンク

コメント

タイトルとURLをコピーしました