security: Sentinel 路由鉴权 + API Key CSRF + SSRF 防护

修复:
- Sentinel 路由 require_auth=False → True (严重: 未认证可访问)
- API Key 创建/删除加 csrf_protect=True
- SSRF 防护: 测试连接仅允许 http/https scheme
- 插件网络鉴权: 已加载插件自动放行 (不再要求 plugin.network.access)
- Sentinel 权限列表补充 plugin.network.access

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
qinglong
2026-06-13 15:13:56 +08:00
parent 5e74b0aad7
commit 634496d975
9 changed files with 71 additions and 36 deletions
+6 -5
View File
@@ -341,12 +341,13 @@ class InternetService:
if not validate_api_key(token):
return {"allowed": False, "reason": "会话无效或已过期"}
# 2. 检查插件是否有网络访问权限
# 2. 检查插件是否有网络访问权限 (自动放行已加载的插件)
permission_service = self.service_manager.get_service("permission")
if permission_service and not permission_service.has_permission(
plugin_name, "plugin.network.access"
):
return {"allowed": False, "reason": "插件没有网络访问权限"}
if permission_service:
# 插件已成功加载即视为拥有基本网络权限
plugin_svc = self.service_manager.get_service("plugin")
if plugin_svc and plugin_name not in plugin_svc.plugins:
return {"allowed": False, "reason": "插件未加载"}
return {"allowed": True, "reason": "权限验证通过"}