この記事では、Pendo Web SDKをセルフホストする際にサブリソース完全性(SRI)を実装する方法を説明します。SRIは、ロードされるPendo Web SDKファイルが改ざんされていないことを確認することで、さらなるセキュリティを提供します。ファイルの完全性ハッシュが期待値と一致しない場合、ブラウザはスクリプトをブロックし、Pendoは初期化に失敗します。
PendoホストJSファイルを用いたSRIの制約
PendoがホストするJavaScript(JS)ファイルをSRIで使用すると、整合性チェックが予想以上に頻繁に失敗する可能性があります。これは、インストールスクリプトを更新しなくてもPendoが提供するファイルが変更される可能性があるためです。
PendoがホストするJSファイルにSRIを適用すると、次の場合に整合性ハッシュが壊れる可能性があります。
- Pendo エージェントのバージョンが更新されます。
- エージェント設定を[最新の安定版(Latest stable)]から[手動(Manual)]に切り替えることで、エージェントのバージョン変更のタイミングを制御でき、これが発生する頻度を減らすことができます。
- アプリケーションやサブスクリプションの設定が変更されます。以下が含まれます:
- サブスクリプション設定やアプリケーション設定でオプションの有効化や変更
- ステージング環境の追加と削除
- ページイベントプロパティやクリックイベントプロパティの追加や削除
これらの変更により、Pendo JSファイルが更新されるため、以前に計算された SRI ハッシュはすべて無効になります。
このような理由から、どうしてもSRIを使用したい場合は、Pendo Web SDKをセルフホストすることをお勧めします。セルフホストの場合、ファイルが変更されるタイミングを制御できるため、予期しない整合性エラーによってPendoのインストールが気付かないうちに破損するのを防ぐことができます。
SRIによるセルフホストJSファイルの実装
- PendoのWeb SDKをセルフホストします。さらに詳しい手順については、 「Pendo Web SDK のセルフホスティング」を参照します。
- JavaScript ファイルのハッシュを生成します。
注:セルフホスト型のWeb SDKに実装を変更すると、今後の最新バージョンの維持に伴う追加の開発者作業が発生します。Pendoはアップデートを継続的にリリースしています。これには、機能強化や重要なセキュリティアップデートが含まれますので、Web SDKを最新の状態に保つために計画を立ててください。RSSフィードを購読すると、Web SDKのアップデートがリリースされた際に通知を受け取ることができます。
ステージング環境でSRIを使用する
[設定]>[ステージング]でステージングサーバーを定義した場合、Pendoはそれらの環境からロードされたときに自動的にWeb SDKのステージングバージョンであるpendo-staging.js を使用します。この動作は、stagingServersおよびstagingAgentUrlオプションを使用して、本番用Web SDKの設定によって制御されます。
残念ながら、stagingAgentUrlでSRIハッシュを使用することはできません。ブラウザは動的に読み込まれたスクリプトに対して完全性チェックを適用しません。回避策として、ステージング環境でも常に本番環境のWeb SDKを使用するように環境を構成します。
-
stagingServersリスト内のすべてのエントリを削除します。 - 本番用のWeb SDKスクリプト(SRIを使用)がすべての環境でロードされることを確認します。
この方法を使用すると、ステージング環境でSRIハッシュを使用しつつ、「ステージング」状態のガイドをステージング環境内で引き続き表示できます。