6 个 Appwrite 云函数均以 execute=["any"] 部署(见 harmony_cloud/deploy/deploy.py 第 158 行),意味着任何未认证的匿名调用方都可以直接调用函数执行端点:
execute=["any"]
harmony_cloud/deploy/deploy.py
POST http://{host}/v1/functions/{functionId}/executions X-Appwrite-Project: {project_id}
其中 db-init 同样公开可调,任意人可触发建库/建集合/写种子数据。
db-init
register
login
getProgress
getDailyWords
learnWord
userId
此外,APPWRITE_HOST 若只开放 80 端口(HTTP),API Key、密码、用户数据均以明文传输,存在中间人窃取风险。
APPWRITE_HOST
说明:本项目定位为教学演示,README「边界说明」也承认未做生产化改造。本 Issue 在于记录安全边界,并提供加固方向,供后续演进参考。
execute=["users"]
ADMIN_TOKEN
问题描述
6 个 Appwrite 云函数均以
execute=["any"]部署(见harmony_cloud/deploy/deploy.py第 158 行),意味着任何未认证的匿名调用方都可以直接调用函数执行端点:其中
db-init同样公开可调,任意人可触发建库/建集合/写种子数据。影响与风险
db-initregisterlogingetProgress/getDailyWords/learnWorduserId即可读取/篡改其学习记录(越权)此外,
APPWRITE_HOST若只开放 80 端口(HTTP),API Key、密码、用户数据均以明文传输,存在中间人窃取风险。加固建议
db-init外,函数改为execute=["users"],端侧通过 Appwrite Session 认证后调用;db-init增加管理级 Token 校验(环境变量ADMIN_TOKEN),或改为仅管理 API 可调用;userId与当前认证用户一致,防止越权读写;login增加失败次数限制 / 指数退避限流;