SECURITY_CONFIG.md
从 4.4.0 之后版本开始,kkFileView 增强了安全性,默认拒绝所有未配置的外部文件预览请求,以防止 SSRF(服务器端请求伪造)攻击。
在 application.properties 中配置允许预览的域名:
# 方式1:通过配置文件
trust.host = kkview.cn,yourdomain.com,cdn.example.com
# 方式2:通过环境变量
KK_TRUST_HOST=kkview.cn,yourdomain.com,cdn.example.com
示例场景:
oss.aliyuncs.com 和 cdn.example.com 的文件trust.host = oss.aliyuncs.com,cdn.example.com
trust.host = *
⚠️ 警告:此配置会允许访问任意外部地址,存在安全风险,仅应在测试环境使用!
禁止特定域名或内网地址:
# 禁止访问内网地址(强烈推荐)
not.trust.host = localhost,127.0.0.1,192.168.*,10.*,172.16.*,169.254.*
# 禁止特定恶意域名
not.trust.host = malicious-site.com,spam-domain.net
优先级:黑名单 > 白名单
docker run -d \
-e KK_TRUST_HOST=yourdomain.com,cdn.example.com \
-e KK_NOT_TRUST_HOST=localhost,127.0.0.1 \
-p 8012:8012 \
keking/kkfileview:4.4.0
# 1. 明确配置信任主机白名单
trust.host = your-cdn.com,your-storage.com
# 2. 配置黑名单防止内网访问
not.trust.host = localhost,127.0.0.1,192.168.*,10.*,172.16.*
# 3. 禁用文件上传(生产环境)
file.upload.disable = true
# 4. 配置基础URL(使用反向代理时)
base.url = https://preview.yourdomain.com
# 危险:允许所有主机访问
trust.host = *
# 危险:启用文件上传(生产环境)
file.upload.disable = false
trust.host = kkview.cn
http://localhost:8012/onlinePreview?url=https://kkview.cn/test.pdf
✅ 应该可以正常预览
http://localhost:8012/onlinePreview?url=https://other-domain.com/test.pdf
❌ 应该被拒绝,显示"不信任的文件源"
not.trust.host = localhost,127.0.0.1
http://localhost:8012/getCorsFile?urlPath=http://127.0.0.1:8080/admin
❌ 应该被拒绝
原因:新版本默认拒绝未配置的主机。
解决:在配置文件中添加信任主机列表:
trust.host = your-file-server.com
不推荐,但如果确实需要:
trust.host = *
检查以下几点:
已支持通配符域名匹配,可使用 *.example.com:
trust.host = *.example.com
说明:
*.example.com 会匹配 cdn.example.com、api.internal.example.com,但不匹配根域 example.com192.168.*、10.*),仅匹配字面量 IPv4 地址,不匹配域名如果发现可疑的预览请求:
trust.host 配置是否合理安全提示:定期检查和更新信任主机列表,遵循最小权限原则。