サードパーティエンドポイントからの JavaScript ファイルの読み込み
サードパーティ JavaScript ファイルをコンテンツ配信ネットワーク (CDN) から動的に読み込むことは避けてください。その代わりに、パッケージの静的リソースフォルダーからコードを読み込んでください。
サードパーティ JavaScript ファイルを CDN やその他のサードパーティから動的に読み込むことは、2 つの理由で許可されていません。
- レビューおよび追跡する製品を明確にするため、ソリューション全体をパッケージバージョン ID でバージョン管理する必要があります。ソリューションがサードパーティエンドポイントからコードを動的に読み込む場合、外部で管理されているコードは、パッケージバージョン ID を変えずに変更されていることがあります。システム管理者および Salesforce セキュリティレビューチームには、コードの変更��通知されません。
Salesforce は、サードパーティコードを最新のセキュリティ脆弱性から保護し続けることを保証できません。コードをパッケージバージョン管理の対象にするには、パッケージの静的リソースフォルダーからコードを動的に読み込みます。パッケージバージョン ID を変更せずに、パッケージ化されたコードを変更することはできません。さらに、バージョン ID を変更すると、コードが変更されたという通知がシステム管理者と AppExchange セキュリティチームに届きます。
- サードパーティエンドポイントからコードを動的に読み込むと、そのエンドポイントは、パッケージのインストール先の Salesforce 組織にコードを挿入できるようになります。パートナーからではなく、Salesforce がコードを管理している、Salesforce 承認の CDN からのみコードを動的に読み込んでください。
簡潔にまとめると、解決策は次のようになります。
- サードパーティ JavaScript ファイルを静的リソースに保存します。
- このリソースをソリューションパッケージに追加します。
- 各 JavaScript ファイルを $Resource URL から読み込みます。
Visualforce の例:
次のコードスニペットは、セキュリティ違反と、その違反を Apex で Aura の Lightning コンポーネント用に修正する方法を示しています。次の Visualforce コードは、jQuery がサードパーティソースから読み込まれるため安全ではありません。
1<apex:includescript value="https://code.jquery.com/jquery-3.2.1.min.js"/>次の Visualforce コードは、$Resource URL を使用して jQuery のバージョンをパッケージの静的リソースフォルダーから読み込むため安全です。
1<apex:includeScript value="{! $Resource.jQuery }"/>Aura の例
次の Aura コンポーネントコードは、jQuery がサードパーティソースから直接読み込まれるため安全ではありません。
1<aura:component>
2 <ltng:require afterScriptsLoaded="{!c.initializeUI}"
3 scripts="https://code.jquery.com/jquery-2.2.0.min.js”/>
4<aura:component>次の Aura コンポーネントコードは、$Resource URL を使用して jQuery がソリューションパッケージから読み込まれ、静的リソースとして参照されるため安全です。
1<aura:component>
2 <ltng:require afterScriptsLoaded="{!c.initializeUI}"
3 scripts="{!$Resource.jsLibraries + '/jsLibOne.js'}"/>
4<aura:component>