ISVforce ガイド
Spring '26 (API version 66.0)
Winter '25 (API version 62.0)
Spring '24 (API version 60.0)
Summer '23 (API version 58.0)
Spring '23 (API version 57.0)
Winter '23 (API version 56.0)
Summer '22 (API version 55.0)
Spring '22 (API version 54.0)
Winter '22 (API version 53.0)
Summer '21 (API version 52.0)
Spring '21 (API version 51.0)
Winter '21 (API version 50.0)
Summer '20 (API version 49.0)
Spring '20 (API version 48.0)
Winter '20 (API version 47.0)
Summer '19 (API version 46.0)
Spring '19 (API version 45.0)
Winter '19 (API version 44.0)
Summer '18 (API version 43.0)
Spring '18 (API version 42.0)
Winter '18 (API version 41.0)
Summer '17 (API version 40.0)
Spring '17 (API version 39.0)
Winter '17 (API version 38.0)
Summer '16 (API version 37.0)
Spring '16 (API version 36.0)
Winter '16 (API version 35.0)
Summer '15 (API version 34.0)
Spring '15 (API version 33.0)
Winter '15 (API version 32.0)
AppExchange でのビジネスの成長
セキュアなソリューションの作成
サードパーティエンドポイントからの JavaScript ファイルの読み込み
Lightning コンポーネントでのサードパーティ CSS の読み込み
CSS 外部コンポーネントの使用
Salesforce ドメインでの JavaScript の実行
デバッグ時の秘密データの露出
安全ではない方法による機密データの保存
既知の脆弱性があるソフトウェアの使用
本番でのサンプルコードの使用
オブジェクトレベルおよび項目レベルのアクセス設定のスキップ
Apex での共有ルールのスキップ
データベースクエリ構造が安全でないことが原因の SOQL インジェクション
クロスサイトリクエストフォージェリ
オープンリダイレクト
Lightning LockerService の無効化
Lightning コンポーネントでの不十分なエスケープ
コンポーネントの非同期コード
接続アプリケーション
用語集
セキュアなコーディングのガイドラインのよくある違反の防止
AppExchange セキュリティレビューでは、よく行われるセキュリティ攻撃に対するソリューションの脆弱性を評価します。レビューに合格するには、ソリューションはセキュアなコーディングのガイドラインに違反することはできません。レビューに合格したソリューションのみが AppExchange で公開配信できます。ソリューションが合格する可能性を高めてください。レビュー済みのソリューションで非常に多く見られる違反、それらの違反がセキュリティ上のリスクを伴う理由、およびコードでそうした違反を回避する方法を説明します。
-
サードパーティエンドポイントからの JavaScript ファイルの読み込み
サードパーティ JavaScript ファイルをコンテンツ配信ネットワーク (CDN) から動的に読み込むことは避けてください。その代わりに、パッケージの静的リソースフォルダからコードを読み込んでください。 -
Lightning コンポーネントでのサードパーティ CSS の読み込み
カスケードスタイルシート (CSS) とその他のリソースは、サードパーティから読み込むのではなく、静的リソースに組み込んでください。 -
CSS 外部コンポーネントの使用
Salesforce Platform は、それぞれの名前空間が分離された Sandbox であることを保証しようとしますが、必ず分離が保証されるわけではありません。名前空間の分離の違反が発生した場合は、あるコンポーネントが、別のコンポーネントからクリックを盗んだり、別のコンポーネントの使用目的を妨げたりすることができます。こうした悪用を防ぐため、コンポーネントのスタイル分離と互換性がないことが分かっている CSS ディレクティブは使用しないでください。 -
Salesforce ドメインでの JavaScript の実行
複数のベンダーからの JavaScript コードを同じオリジンで実行できます。コードの干渉を防ぐため、ベンダーの JavaScript コードは Sandbox 化されます。Sandbox の外に出したり、オリジンの外部でコードを実行したりしようとしないでください。適切なオリジンで実行される Visualforce、Aura、または Lightning Web コンポーネントを使用します。 -
デバッグ時の秘密データの露出
本番環境で debug ステートメントを使用して秘密データをログに記録することは、セキュリティの脆弱性となります。本番環境では、秘密データ、機密情報、パスワード、キー、スタック追跡をログに記録しないでください。これらのデータは、編集するか、ログから省きます。 -
安全ではない方法による機密データの保存
Salesforce Platform からデータをエクスポートする場合、およびプラットフォームに秘密データを保存する場合は、企業のセキュリティ標準に従います。 -
既知の脆弱性があるソフトウェアの使用
自分の使用事例に関連する共通脆弱性識別子 (CVE) がソフトウェアに対して文書化されている場合、そのソフトウェアを使用することは、セキュリティの脆弱性となります。ソリューションに既知の脆弱性がある場合、セキュリティパッチが提供されたらできるだけ速やかに、そのパッチをテストしてリリースします。ソリューションで使用しているソフトウェアに、CVE で文書化されている脆弱性があるが、自分の使用事例には関連していない場合は、偽陽性に関するドキュメントを準備します。 -
本番でのサンプルコードの使用
サンプルコードは、自分でアプリケーションを開発する準備のために教材として使用するのにとどめてください。本番コードを作成するときは、必ず自分でコードを記述します。自分が直接管理していないソースからコードをコピーするのは避けてください。 -
オブジェクトレベルおよび項目レベルのアクセス設定のスキップ
標準オブジェクトとカスタムオブジェクトに対して、組織の CRUD (作成、参照、更新、削除) 設定と FLS (項目レベルセキュリティ) 設定を適用するようにソリューションを設計します。 -
Apex での共有ルールのスキップ
Apex コードでは、プロファイルベースの権限、項目レベルのセキュリティ、共有ルール、組織全体のデフォルトを順守します。 -
データベースクエリ構造が安全でないことが原因の SOQL インジェクション
Salesforce Object Query Language (SOQL) インジェクションを防ぐには、バインド変数と入力サニタイズを使用します。 -
クロスサイトリクエストフォージェリ
クロスサイトリクエストフォージェリ (CSRF) は、認証済みの Web アプリケーションセッション中に、不要なアクションをエンドユーザに強制的に実行させる攻撃です。CSRF を防ぐには、confirmationTokenRequired を使用するか、またはユーザアクションによって状態変更をトリガします。 -
オープンリダイレクト
オープンリダイレクトが実行されるのは、アプリケーションが検証なしでユーザ制御パラメータ値に動的にリダイレクトされる場合です。オープンリダイレクトを防止するには、ハードコードされたリダイレクトを使用します。 -
Lightning LockerService の無効化
Lightning LockerService は、Lightning コードの重要なセキュリティ機能です。コンポーネントの分離が提供されるため、安全な標準 API とイベントメカニズムを使用して、多くのソースからのコードを実行および操作できます。Lightning Locker は、Lightning コンポーネントまたはアプリケーションを含む AppExchange パッケージに対して有効にします。 -
Lightning コンポーネントでの不十分なエスケープ
バンドル内の各コンポーネントは、親コンポーネントやアプリケーションによって提供された入力、または URL パラメータで提供された入力をサニタイズする責任があります。 -
コンポーネントの非同期コード
ハッカーは、非同期コードのタイミングを操作して、悪意のある結果を生じさせることができます。現在の実行コンテキストを保持するには、非同期関数コールをラップするか、または複数のアクションを単一の要求にまとめます。