scanii/scanii-php
GitHub: scanii/scanii-php
Scanii 内容处理 API 的官方 PHP SDK,用于在 PHP 应用中集成恶意文件扫描能力。
Stars: 1 | Forks: 0
# scanii-php
[Scanii](https://www.scanii.com) 内容处理 API 的官方 PHP SDK。
## SDK 原则
1. **轻量。** 零运行时依赖,仅使用标准库。
2. **保持最新。** 始终与最新的 Scanii API 保持同步。
3. **仅用于集成。** 仅封装 REST API —— 重试、并发和批处理由调用者负责。
唯一需要的标准库扩展是 `ext-curl` 和 `ext-json`,这两个扩展在所有官方 PHP 发行版(包括 Windows 构建版本)中均默认提供。
## 安装
```
composer require scanii/scanii-php
```
要求 PHP 8.4 或更高版本。
## 快速入门
```
use Scanii\ScaniiClient;
$client = ScaniiClient::create('your-api-key', 'your-api-secret');
// Scan a file from disk:
$result = $client->process('/path/to/file');
echo implode(', ', $result->findings);
```
`ScaniiClient::create` 返回一个线程友好的客户端,您可以跨请求重用它;其构造函数不执行任何 I/O 操作。
### 从流进行扫描
传入任何 PHP 流资源 —— `fopen()`、`tmpfile()`、`php://temp` 等:
```
// From a temp file / in-memory stream:
$stream = fopen('php://temp', 'r+');
fwrite($stream, $content);
rewind($stream);
$result = $client->processStream($stream, 'upload.bin');
echo implode(', ', $result->findings);
fclose($stream);
```
## 区域节点
| 常量 | 节点 |
|---|---|
| `ScaniiTarget::AUTO` | `https://api.scanii.com` |
| `ScaniiTarget::US1` | `https://api-us1.scanii.com` |
| `ScaniiTarget::EU1` | `https://api-eu1.scanii.com` |
| `ScaniiTarget::EU2` | `https://api-eu2.scanii.com` |
| `ScaniiTarget::AP1` | `https://api-ap1.scanii.com` |
| `ScaniiTarget::AP2` | `https://api-ap2.scanii.com` |
| `ScaniiTarget::CA1` | `https://api-ca1.scanii.com` |
传入任何字符串 URL 以指定自定义或本地节点:
```
$client = ScaniiClient::create('key', 'secret', 'http://localhost:4000');
```
## 使用 scanii-cli 进行本地开发
针对本地模拟服务器运行集成测试 —— 无需真实的凭据:
```
docker run -d --name scanii-cli -p 4000:4000 ghcr.io/scanii/scanii-cli:latest server
composer install
composer test
```
测试凭据:key 为 `key`,secret 为 `secret`,节点为 `http://localhost:4000`。
## 从 `uvasoftware/scanii-php` 迁移
```
-"uvasoftware/scanii-php": "^5.0"
+"scanii/scanii-php": "^6.0"
```
PHP 命名空间保持不变(`Scanii\…`)。其他显著更改:
- 运行时不再依赖 Guzzle。仅使用 `ext-curl` 和 `ext-json`(两者均为标准库)。
- 自动加载器使用 PSR-4 —— `src/Scanii/...` 文件向上移动到了 `src/...`。
- 结果对象使用 **公共 `readonly` 属性** 而非 getter:
- $r->getFindings()
+ $r->findings
- `process` / `processAsync` / `fetch` 现在显式接收一个可为空的 `?string $callback` 作为最后一个参数(之前通过元数据隐式传递):
- $client->fetch($url, $callback, $metadata)
+ $client->fetch($url, $metadata, $callback)
- 错误抛出 `Scanii\ScaniiException`(及其子类 `ScaniiAuthException`、`ScaniiRateLimitException`),而非 Guzzle 异常。
旧的 composer 坐标 `uvasoftware/scanii-php` 已弃用,将不再接收后续更新。
## API 文档
完整的 Scanii API 契约请参阅 [https://scanii.github.io/openapi/v22/](https://scanii.github.io/openapi/v22/)。
## 许可证
Apache 2.0 —— 详见 [LICENSE](LICENSE)。
标签:AMSI绕过, Composer, cURL, ffuf, JSON, Naabu, OpenVAS, PHP, REST API, SaaS集成, Web安全, 内容处理, 内容安全, 威胁检测, 恶意软件扫描, 扫描服务, 文件扫描, 无依赖, 流处理, 网络安全, 蓝队分析, 隐私保护