DikaArdnt/safesurf-php
GitHub: DikaArdnt/safesurf-php
一个用于检查 URL 安全性的 PHP 库,通过域名、DNS、TLS、页面内容及威胁情报等多维度分析,输出评分和判定原因。
Stars: 2 | Forks: 0
# SafeSurf(PHP 库)
## 免责声明
本项目是对仓库 [abhizaik/urlvet](https://github.com/abhizaik/urlvet) 的原生 PHP 重写。
SafeSurf for PHP 侧重于透明的分析结果(原因)、评分和判定。
## 功能
- 实时 URL 分析:重定向链、HTTP 状态、HSTS
- 域名与 DNS 信号:排名(top-1m)、IP 解析、NS/MX 有效性
- URL 信号:关键词、URL 缩短器、过长/过深、子域名数量、punycode
- TLS/SSL 信号:TLS 存在性、颁发者、证书年龄、链验证(尽力而为)
- 页面内容(尽力而为):标题、登录/支付/个人表单检测、隐藏 iframe、品牌不匹配
- 威胁情报源:PhishTank(可选,取决于 API 可用性)
- 可选缓存:通过 phpfastcache 加速网络查询和数据解析
## 系统要求
- PHP >= 8.0
- PHP 扩展:`curl`、`openssl`、`dom`、`libxml`
## 安装(通过 Composer / Packagist)
```
composer require safesurf/safesurf
```
## 安装(从此源码仓库)
```
git clone https://github.com/DikaArdnt/safesurf-php.git
cd safesurf-php
composer install
```
## 快速开始
```
php examples/analyze.php example.com
```
## 在你的代码中使用(无缓存)
```
__DIR__ . '/storage/cache',
]));
$config = new Config(cache: new PhpFastCacheAdapter($pool));
$result = SafeSurf::analyze('https://example.com', $config);
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . PHP_EOL;
```
## 配置
主配置文件位于 [Config.php](./src/Config.php)。最常用的字段包括:
- `cache`:缓存实现(可选)。现成适配器:[PhpFastCacheAdapter.php](./src/Cache/PhpFastCacheAdapter.php)
- `rankCsvPath`:`assets/top-1m.csv` 的路径,用于排名查询
- `publicSuffixListPath`:PSL 路径(`storage/public_suffix_list.dat`),用于提取可注册域名和 TLD
- `httpTimeoutMs`、`httpHeaderTimeoutMs`、`maxRedirects`、`userAgent`:HTTP 请求控制
- 缓存 TTL:`ttlDomainRankSeconds`、`ttlIpResolutionSeconds`、`ttlDnsValiditySeconds`、`ttlWhoisSeconds`、`ttlHttpCombinedSeconds`、`ttlTlsCombinedSeconds`、`ttlContentSeconds`、`ttlAnalyzeResultSeconds`
- PhishTank(可选):`phishTankApiKey`、`phishTankUserAgent`
## 输出(结果结构)
`SafeSurf::analyze()` 返回一个适合 `json_encode()` 的数组:
- `url`、`domain`
- `features`
- `rank`
- `tld`:包含 `tld`、`is_trusted_tld`、`is_risky_tld`、`is_icann`
- `url`:包含 `url_shortener`、`uses_ip`、`contains_punycode`、`too_long`、`too_deep`、`has_homoglyph`、`subdomain_count`、`keywords`
- `infrastructure`:包含 `ip_addresses`、`nameservers_valid`、`ns_hosts`、`mx_records_valid`、`mx_hosts`
- `domain_info`:RDAP/WHOIS 结果(若查询失败可能为 `null`)
- `analysis`:重定向链、HTTP 状态、HSTS
- `ssl_info` 和 `tls_info`:TLS/SSL 摘要
- `content_data`:HTML 解析摘要(可能为 `null`)
- `domain_randomness`:域名标签的熵/随机性结果
- `typosquat_result`:域名抢注/组合抢注结果
- `phishing`:PhishTank 检查结果(可能为 `null`)
- `result`:最终分数、判定和原因
- `performance`:总耗时和计时列表
- `incomplete`、`errors`:若部分任务失败(网络/超时)则存在
## 安全与操作说明
- SSRF 防护:HTTP 请求会解析 IP,并拒绝目标主机/IP 的私有、链路本地和回环 IP。
- TLS/SSL 验证为尽力而为:某些环境下因 CA 证书库或配置问题可能无法验证链。
- 部分模块需要互联网访问(IANA RDAP 引导、PSL 下载、PhishTank)。
- 内容分析会执行 请求和 HTML 解析;建议启用缓存以减少负载。
## 开发
运行测试:
```
cd safesurf-php
vendor/bin/phpunit
```
## 许可证
MIT 许可证。详见 [LICENSE](./LICENSE)。
标签:Composer, DNS检测, ffuf, HSTS, IP解析, MX检测, NS检测, PhishTank集成, PHP库, Punycode检测, Sigma 规则, TLS/SSL检测, URL安全检查, 关键字检测, 域名分析, 域名排名, 威胁情报, 实时URL分析, 开发者工具, 恶意网址检测, 短链接检测, 缓存支持, 网络安全, 表单检测, 证书验证, 重定向分析, 钓鱼检测, 隐私保护, 隐藏iframe检测, 页面内容分析