ビルディングブロックによる安全なガイドコンテンツのレンダリング

最終更新日:

Pendoのガイドコンテンツは、ビルディングブロックと呼ばれる独自のシステムに基づいて開発されています。このガイド作成システムにより、追加のサニタイズを必要とせずに安全なコンテンツレンダリングが可能になります。

Pendoにおけるビルディングブロック

Pendoガイドの各要素は、テキスト、画像、ボタン、ビデオなどの事前定義されたビルディングブロックとして存在します。PendoのビルディングブロックはDOM要素のJSONベースの表現であり、クロスサイトスクリプティング(XSS)攻撃などの脆弱性にさらされることなく、ガイドを安全にレンダリングするように設計されています。このアーキテクチャは、直接HTMLやJavaScriptに依存するのではなく、事前に定義された設定を使用してガイドにコンテンツを安全に追加します。

ビルディングブロックのセキュリティ

ビルディングブロックアーキテクチャには堅牢なコンテンツサニタイズ機能が採用されています。各ビルディングブロックは事前に定義されているため、Pendoはユーザーコンテンツの表示場所と方法を厳密に制御できます。これらのビルディングブロックを使用すると、ガイド作成者はガイドの基礎となるHTMLやJavaScriptを直接管理する必要がなくなります。代わりに、ガイド作成者は、JSON設定を通じてPendoの内部ライブラリを使用して要素を組み立てます。

ビルディングブロックによって制御された構造のため、DOMPurifyのような一般的なサニタイズライブラリは必要ありません。要素は特定の安全であるプロパティに制限され、構成レベルで潜在的な脆弱性が確実に除去されます。以下はその例です。

  • テキスト要素はtextContent内のコンテンツに制限されます。
  • ボタンはtextContentaria-labelに制限されます。
  • 画像はsrcおよびaltにのみユーザーコンテンツを使用できます。
  • 動画はsrctitleに制限されています。

Pendoが各ビルディングブロックの構造とフィールドを完全に管理しているため、任意のコンテンツや信頼できないスクリプトをガイドに直接挿入することはできません。

許可される属性

Pendoは安全な属性を事前に定義しています。未承認の属性が見つかった場合、ガイドは読み込まれず、安全でないまたは予期せぬプロパティを含めようとする試みはすべてブロックされます。

このシステムは、DOMPurifyのようなライブラリと同等のセキュリティ成果を達成します。レンダリング時に追加のサニタイズを必要とせず、信頼できないコードの注入を防ぎます。ユーザーがAPIリクエストを送信してビルディングブロックの内容を直接変更しようとしても、Pendoクライアントは特定の事前承認された属性を持つコンテンツのみを表示します。

次の属性が許可されています。

allow, allowfullscreen, alt, autofocus, class, cols, contenteditable, dir, for, frameborder, href, id, loading, name, placeholder, placement, rows, role, sandbox, scoped, src, start, style, tabindex, target, title, type, value

カスタムコードブロック

インストールスクリプトでPendoを実装すると、ガイド作成者はガイド内にカスタムコードブロックを追加することができます。これを防ぐには、次のいずれかの方法があります。

  • インストールスクリプトでpreventCodeInjectionを使用してサブスクリプションのカスタムコードブロックを無効にします。詳細については、「APIドキュメント」をご確認ください。
  • インストールスクリプトを使用する代わりにPendo Launcherブラウザ拡張機能を通じてPendoをデプロイします。この方法でPendoを実装する方法についての情報は「実装オプション」を参照してください。

Pendo Launcherはブラウザ拡張機能であるため、リモートコードの挿入は許可されない旨が規定されているGoogleのManifest V3に準拠する必要があります。この標準は、Pendo Launcher拡張機能の一部としてバンドルされていないJavaScriptコードの実行を防ぎます。そのため、カスタムコードブロックを使用してガイドを作成することはできません。詳細については、「Pendo Launcherのセキュリティとプライバシー」を参照してください。

インストールスクリプトを使用してPendoを実装し、サブスクリプションのカスタムコードブロックをオフにしない場合、カスタムコードブロックを許可することを選択したことになります。ガイド作成者はカスタムコードを慎重に確認して、セキュリティの脆弱性がないことを確認する必要があります。

 

この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています