2021/03/10

Salesforce Lightning Lockerとは?基本と概要を解説!

 
  

Salesforce Lightning Lockerとは?

SalesforceのLightning Lockerとは、Lightningコンポーネントのためのセキュリティアーキテクチャのことを指します。 Lightning Lockerでは、Lightningコンポーネントがそれぞれの空間に分離されるため、セキュリティ面でのメリットがあります。 さらに、サポートされるAPIへのアクセスのみを許可し、公開されていないフレームワーク内部へのアクセスを排除することで、コードのサポート機能が向上されるベストプラクティスが促進されます。

Lightningコンポーネントとは?

Lightningコンポーネントとは、Salesforce 1 Platform上でUIを構築する技術のことを指します。 この技術により、UI部品をコンポーネント化し、積み木やブロックのような感覚で素早く、直感的にアプリの構築をすることが可能となります。 また、コンポーネント化されたUI部品は、Salesforce 1 Platformで再利用することも簡単なため、効率化という面でもメリットを持っています。

Salesforce Lightning Lockerの概要

ここからはSalesforceのLightning Lockerについての概要を、簡単にご紹介します。

JavaScriptの厳格モード

通常であれば、[use strict]をコードで指定しなければ有効にならない「厳格モード」が、暗黙的に有効となり、コードの安全性、堅牢性、サポート範囲が広がります。

DOMのアクセスコンテインメント

コンポーネントは、DOMをトラバースし、同じ名前空間内のコンポーネントで作成された要素にアクセスすることしかできません。これにより、クロス名前空間アクセスのみが防止され、独自の名前空間内のクロスコンポーネントアクセスを防ぐことで、コンポーネント同士の連動性が向上し、問題の発生率の低下が見込めます。

セキュアなラッパー

セキュリティ上の理由で、Lightning Lockerは、オブジェクトをセキュアなバージョンでラップしたり、非表示にして、グローバルオブジェクトの使用を制限します。 Lightning Lockerでは、コンポーネントやイベントなどのインスタンスも、ラップされたセキュアなバージョンで置き換えられます。例として、[SecureAura]や[SecureComponent]などが挙げられます。

eval()関数の制限

Lightning Lockerでは、コードを動的に評価するサードパーティライブラリを使用できるようにeval()関数の使用がサポートされます。これは、名前空間のグローバル範囲でのみ適用され、eval()関数はコールされた範囲内のローカル変数にはアクセスできません。

MIMEタイプのファイルの分析

Lightning Lockerは、ブラウザから送信されたMIMEタイプのファイルを分析し、一部のMIMEタイプを許可、一部のMIMEタイプをサニタイズし、残りをブロックします。

JavaScript APIフレームワークメソッドへのアクセスの制限

これまでは、サポートされていないJavaScript APIフレームワークメソッドへもアクセスできたため、そのメソッドが変更や削除されたときにコードが破損するといったトラブルがありました。しかし、現在のLightning Lockerでは、サポートされている公開済みのJavaScript APIフレームワークのメソッドにのみアクセスできるようにすることで、この問題を解消しています。

Lightning Lockerの注意点

SalesforceのLightning Lockerは、セキュリティ面で様々な効果をもたらしますが、いくつか注意しなければならないポイントがあります。 まずはLightning Lockerの影響を受けないものが存在する、という点です。 Lightning ExperienceやSalesforceアプリケーションなどはLightning Lockerの影響を受けますが、Salesforce Classic、Visualforceベースのコミュニティ、Salesforce Classicのアプリケーション(Salesforce ClassicのSalesforceコンソールなど)には影響しません。 次に、コンポーネントのAPIバージョンを混在させてはならない、という点です。 一貫性を保ちデバッグを容易にするためにも、アプリケーション、コンポーネント内のコンポーネント、またはコンポーネントを拡張するコンポーネントなどの、すべてのコンポーネントに同じAPIバージョンを設定することが推奨されています。 最後に、サポートされていないブラウザでは無効化される、という点です。 Lightning Lockerは、ブラウザのJavaScriptの機能である厳格モード、Mapオブジェクト、Proxyオブジェクトのサポートに依存しています。これらの要件をブラウザが満たしていなければ、Lightning Lockerはそのすべてのセキュリティ機能を適用することができず、無効となってしまいます。

Lightning Lockerの理解を深めて、より安全なUI構築を!

今回はSalesforceのLightning Lockerの基本的な概要と注意点についてご紹介しました。 セキュリティやベストプラクティスが促進されるなどのメリットを享受するためには、概要と注意点をよく理解して、UI構築をしなければなりません。 そのため、Lightning Lockerについて、しっかりと情報収集し、理解した上でLightningコンポーネントでのUI構築を始めることをおすすめします。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】