メインコンテンツまでスキップ
バージョン: 最新

PHP SDK の安全性と状態

SDK は信頼できないプロジェクトファイルを読み取り、修復が有効な場合は変更できます。スキャンは、明示的な対象、制御された保存先、すべての検出結果に対する確認経路を備えた特権操作として扱ってください。

プロセスグローバルな設定

Scanner は設定と現在のレポートを static 状態で保存します。fluent セッターは新しい Scanner インスタンスを返しますが、共有されたプロセス状態を変更します。

$first = new Scanner();
$second = $first->setPathScan('/srv/project-a');

// Both objects observe the same Scanner configuration.

各 PHP プロセスでは一度に 1 件のスキャンを実行してください。バックグラウンドジョブ、同時リクエスト、テナント分離には新しい CLI プロセスを使用します。長時間稼働するワーカーは実行ごとに完全な設定を適用し、前のジョブの状態を再利用してはいけません。run() はスキャン開始時にレポートをリセットしますが、スキャナー設定はリセットしません。

ファイルアクション

対話実行とサイレント実行ではデフォルトのプロンプト動作が異なります。無人コードでは明示的に選択してください。

$report = (new Scanner())
->setPathScan('/srv/app')
->setSilentMode()
->setAutoSkip()
->run();

ファイルを変更するアクションでは enableBackups() を呼び出し、setPathBackups() を対象外の書き込み可能なディレクトリに設定してください。隔離、ホワイトリスト、難読化解除、レポート、ログ、永続的な検出結果、チェックポイントはスキャン対象プロジェクトの外部に置きます。自動クリーン、隔離、削除の前に、代表的なコピーでレポート専用スキャンを実行し、coveragefindingsdiagnostics を確認して、同じ本番アカウントでバックアップと復元をテストし、対象パスを承認されたプロジェクトルートに制限してください。

パスと権限

信頼できる設定からの絶対パスを渡します。setPathScan()setPathReport()、その他のパスセッターの前に、リクエスト由来のパスを正規化して認可してください。SDK は Path::get() で正規化しますが、認可境界を強制するものではありません。対象の読み取りと制御された出力の書き込みに必要な最小限のファイルシステムアクセスで実行し、意図したデプロイメントルート外をスキャンまたは削除できるアカウントで Web リクエストを実行しないでください。

ネットワーク動作とオフライン操作

コアコードスキャンは埋め込み定義を使用します。整合性検証と Maltrail ドメイン定義は送信 HTTPS を使用でき、成功したリモートデータはスキャン対象外の OS キャッシュに保存されます。送信トラフィックが遮断される環境では、レポート診断を取得して保持してください。更新失敗後もキャッシュ済み定義が有効な場合があり、使用可能なメタデータは signature_indexes に記録されます。

失敗時の方針

run() が返す false は運用エラーとして扱い、不完全なカバレッジ、診断、警告は確認シグナルとして扱います。レポートにはスキャンタイムスタンプ、対象識別情報、Scanner::getVersion() のバージョン、外部ジョブ識別子を保存してください。getLastError() のメッセージは保護されたアプリケーションログに記録し、対象パス、レポート内容、生のエラーテキストを信頼できないユーザーに公開しないでください。