Skip to main content

Lightning Web セキュリティ入門

学習の目的

この単元を完了すると、次のことができるようになります。

  • Lightning Web セキュリティについて説明する。
  • Lightning Web セキュリティの利点を挙げる。

Lightning Web セキュリティとは?

システム管理者や開発者が新しい機能を組織に追加するとき、組織のセキュリティは最優先事項です。Salesforce または AppExchange からの事前作成済みコンポーネントにもカスタムコンポーネントにも、組織が危険なコードによって侵害されるリスクが伴います。 

とはいえ、セキュリティのためにパフォーマンスや機能を制限することも望ましくありません。そこで組織の安全を確保するために作成されたのが Lightning Web セキュリティ (LWS) です。LWS を使用すると、新しい Lightning コンポーネントのユースケースを通じて機能が向上します。ただし、LWS について詳しく学習する前に、その前身である Lightning Locker について簡単に見ていきましょう。

メモ

メモ

このモジュールでは、「Lightning Web コンポーネント」の意味の違いに気付くかもしれません。「Lightning Web コンポーネント」というプログラミングモデルを表す場合と、「Lightning Web コンポーネント」というコンポーネント自体を表す場合があります。

Lightning Locker

すでに Lightning コンポーネントを使用している方は Lightning Locker のことをよくご存知だと思います。Lightning Locker は Lightning Web コンポーネントと Aura コンポーネントを安全に保つための標準で、そのために、Lightning コンポーネントの名前空間をそれぞれのコンテナ内に分離し、コーディングのベストプラクティスを適用しています。たとえば、c-editor というコンポーネントは c 名前空間のものであるため、ltngmu 名前空間のコンポーネントからは分離されています。 

Lightning Locker は今すぐ廃止されるわけではありません。カスタム Lightning Web コンポーネントとカスタム Aura コンポーネントが含まれていない組織では、Lightning Web コンポーネント用 LWS (正式リリース) と Aura コンポーネント用 LWS (ベータ) がデフォルトで有効になります。この有効化により、Spring '22 に発表された LWS アーキテクチャの段階的なロールアウトが継続されます。Lightning Web セキュリティは、コンポーネントのセキュリティとパフォーマンスに今後使用されるものです。LWS に早く移行できれば、それだけ組織の安全性と処理速度が向上します。

メモ

メモ 

このモジュールでは Lightning Web セキュリティについて説明します。Lightning Locker についての詳細は、「リソース」セクションのリンクを参照してください。 

次世代 - Lightning Web セキュリティ

Lightning Web セキュリティは Lightning コンポーネント界のニューフェースです。Lightning コンポーネントを使用している方はご存知のとおり、Salesforce ページには任意の数の他社からのコンポーネントを含めることができます。独自のカスタムコンポーネントは Salesforce が作成したコンポーネントや自分が開発または使用する AppExchange のアプリケーション内のコンポーネントと共存します。 

静的リソースから読み込まれるサードパーティライブラリを含むさまざまなソースからの多くのコンポーネントが環境内に存在することは、潜在的な脅威につながります。コンポーネント内の悪意あるコードがウィンドウ、ドキュメント、要素などのグローバルオブジェクトにアクセスし、リソースやデータを取得し、組織全体に被害を与える可能性があります。 

JavaScript Sandbox によるセキュリティ

Lightning Web セキュリティのアーキテクチャは、環境内で各コンポーネントを名前空間専用の JavaScript Sandbox に分離することによって機能します。1 つのコンポーネントからの危険なコードは、その名前空間外の他のコンポーネントのリソースにはアクセスできません。

Lightning Web セキュリティのユースケース

Lightning Locker と Lightning Web セキュリティのどちらも、安全でない API の動作をブロックまたは変更しますが、LWS は次のような使用が可能であるためパフォーマンスとセキュリティがさらに向上します。

クロス名前空間コンポーネントの使用
Lightning Web コンポーネントで異なる名前空間からコンポーネントやモジュールをインポートして、コンポジションや拡張機能を介して使用できます。コンポーネントはそれぞれの名前空間 JavaScript Sandbox に透過的に分離されています。ユーザーはこれが行われることに気付くこともありません。

グローバルオブジェクトとのインタラクション
Lightning Locker ではコンポーネントを分離するためにセキュアなラッパーが必要ですが、そのためにパフォーマンスが制限され、一部のサードパーティライブラリを使用できません。Lightning Web セキュリティでは、安全でないコードが検出されたコンポーネントの動作をブロックまたは変更することによって、セキュアなラッパーが不要になります。これはコードが存在する Sandbox 内で実行されるため、問題が発生することはありません。これによって、コンポーネント内でサードパーティライブラリをより自由で柔軟に使用できます。

iframe コンテンツと ID へのアクセス
Lightning Web セキュリティでは Lightning Web コンポーネントから iframe 要素のコンテンツへのアクセスが許可されるため、Lightning Locker によってブロックされていた他の Web 開発機能を使用できます。

パフォーマンスの向上
セキュアなラッパーが必要ないため、名前空間 JavaScript Sandbox 内のコードの実行が速くなります。

サードパーティ JavaScript ライブラリのサポートの向上
LWS では、ライブラリはそれぞれの名前空間 JavaScript Sandbox 内で実行されるため、ライブラリによってグローバルオブジェクトの操作などを実行できます。グローバルオブジェクトに対する変更は、他の名前空間のコンポーネントには影響しません。

Lightning Web セキュリティは JavaScript と共に進化
LWS はブラウザープラットフォームと共に進化する最新の TC39 標準に沿ってモデル化されているため、テクノロジーが変化しても古くなることはありません。

次の単元では、Lightning Web セキュリティのしくみについて掘り下げ、LWS によって影響を受けるコンポーネントがあるかどうかを判断する方法や組織内で LWS を有効にする方法を学習します。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む