PHP SDK の概要
アプリケーションからスキャンの開始、構造化レポートの利用、組み込みシグネチャインデックスの照会が必要な場合は、PHP SDK を使用します。サポート対象の API は AMWScan\Scanner と、読み取り専用の AMWScan\Signatures ルックアップメソッドです。
インストールと読み込み
Composer でパッケージをインストールし、SDK を使用する前に Composer のオートローダーを読み込みます。
composer require marcocesarato/amwscan
require __DIR__ . '/vendor/autoload.php';
use AMWScan\Scanner;
パッケージには、fileinfo、json、mbstring、zlib 拡張機能を有効にした PHP 7.4 以降が必要です。サポート対象の環境については 要件 を参照してください。
エントリポイントを選ぶ
| 用途 | API | 結果 |
|---|---|---|
| ファイルまたはプロジェクトをスキャンする | Scanner::run() | stdClass のスキャンレポート、または捕捉したスキャンエラー時は false |
| 完了したスキャン結果を読み取る | Scanner::getReport() | 現在の stdClass スキャンレポート |
| 完全一致する SHA-256 マルウェアハッシュを確認する | Signatures::findKnownMalwareHash() | 一致レコードまたは null |
| 従来の正規化済みファイルハッシュを確認する | Signatures::matchesLegacyCoreFile() | bool |
| 組み込みの不審なドメイン指標を一覧する | Signatures::getDomainIndicators() | 指標レコードの配列 |
スキャン実行を統合する前に Scanner でスキャンする を確認してください。結果を永続化したりアラートを出したりする前に レポートと検出結果 を確認してください。
最小構成の無人スキャン
use AMWScan\Scanner;
$scanner = new Scanner();
$report = $scanner
->enableLiteMode()
->setSilentMode()
->setAutoSkip()
->run([__DIR__ . '/project']);
if ($report === false) {
throw new RuntimeException($scanner->getLastError() ?: 'Scan failed.');
}
printf("Scanned: %d; findings: %d\n", $report->scanned, $report->detected);
setSilentMode() は非対話モードを設定し、別のプロンプトを設定していない場合はスキップをデフォルトのアクションとして選択します。これだけでスキャンが読み取り専用になるわけではありません。代表的なレポートを確認するまで、自動修復は無効のままにしてください。
API の安定性
Scanner とこのセクションで説明するルックアップメソッドは、サポート対象の統合インターフェイスです。Archive、Checkpoint、Console、Findings、Integrity、Modules、Remote、Reputation 以下のクラスはスキャナー内部を支援します。アプリケーションをこれらや、Scanner::$settings、Signatures::$raw などの public static プロパティに依存させないでください。
スキャナーは設定とレポートを static 状態で保持します。1 つの PHP プロセスでは、同時に実行するスキャンは 1 件にしてください。同時実行ジョブ、キューに入れたスキャン、テナント間の分離には別プロセスを使用します。ワーカーまたは長時間稼働する Web プロセスで SDK を実行する前に、安全性と状態 を確認してください。
リファレンスマップ
| リファレンス | 内容 |
|---|---|
| Scanner でスキャンする | コンストラクター、ライフサイクル、オプション、フィルター、出力、修復コントロール |
| レポートと検出結果 | レポートスキーマ、カバレッジ状態、検出結果、診断、失敗処理 |
| シグネチャの照会 | ハッシュおよびドメイン照会の契約 |
| 安全性と状態 | 状態の存続期間、破壊的なアクション、ネットワーク動作、デプロイメントガイダンス |