feat: 成片中心后端升级(封面生成/复核/批量下载) #287
Reference in New Issue
Block a user
Delete Branch "feat/video-center-backend"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
成片中心后端升级
完成内容
关键设计
测试
🔍 代码审计结论:有条件通过(1 P1 + 2 P2)
✅ 做得好的地方
🔴 P1 - 项目权限越权(必须修复)
list_videos、get_video、update_video_review_status三个接口只传了project_id或video_id,但没有调用check_project_access校验用户是否有权限访问该项目的成片。当前可以通过遍历 video_id 访问任意项目的成片。
修复方式:参照
assets.py的模式,查询到 video 后用check_project_access(video.project_id, user_id, project_repository)校验。🟡 P2 - batch_download 状态查询无权限校验
GET /videos/batch-download/{job_id}任何人知道 job_id 就能查下载状态和 download_url。建议:把 user_id 存到任务结果里,查询时校验当前用户是否为任务创建者。
🟡 P2 - celery任务注册确认
celery任务名
worker.batch_download_videos,请确认 worker 端batch_download.py已正确注册同名任务。📌 其他建议
review_status接口入参建议用Literal["pending_review", "approved", "rejected"]做类型校验(schema层已有,但update接口未限制)sort_by/sort_order参数,目前默认倒序可接受c048c39658toc34cae3c21【代码审计】PR #287 成片中心后端 审查结论:不推荐
总览
问题清单
P1 - 4个接口均无项目权限校验(越权访问)
位置:apps/api/app/api/routes/videos.py - 全部4个接口
问题描述:
check_project_access已经从_helpers导入,但在所有接口中都没有被调用!
这是严重的权限绕过问题,攻击者可枚举video_id获取所有项目的成片数据。
修复建议:每个涉及成片数据的接口都必须调用check_project_access校验:
P3 - 未使用的导入
亮点
必须修复P1权限问题后重新提交审计。
CI全绿,代码结构符合规范,approve
CI全绿,approve