fix: 修复学生代码窃取 token、提示词链 XSS 和打分没有上限的问题
- 运行提交代码的 iframe(编辑器预览、随机评分弹窗、/submission/:id、全屏预览) 加上 sandbox,不给 allow-same-origin,代码读不到 localStorage 里的 token - 提示词和 AI 回复的 markdown 渲染时转义原始 HTML,链接只放行 http(s)/mailto; ChainModal 也改用这个渲染函数 - 打分限定 1-5 分(超出返回 422),不能给自己的提交打分 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
4014aaabbf
commit
73788c4595
8 files changed
+78
-34
No files matched your search
@@ -136,6 +136,10 @@ describe("评分", () => {
|
||||
const again = await (await client("s0"))("PUT", `/api/submission/${uuid(sub)}/score`, { score: 1 })
|
||||
expect(again.json.message).toBe("你已经给这个提交打过分了")
|
||||
expect((await (await client("s0"))("PUT", `/api/submission/${uuid(sub)}/score`, { score: 0 })).status).toBe(400)
|
||||
expect((await (await client("s1"))("PUT", `/api/submission/${uuid(sub)}/score`, { score: 6 })).status).toBe(422)
|
||||
const self = await (await client("author"))("PUT", `/api/submission/${uuid(sub)}/score`, { score: 5 })
|
||||
expect(self.status).toBe(400)
|
||||
expect(all(`SELECT 1 FROM submission_rating WHERE user_id = $id`, { id: author })).toEqual([])
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
Reference in new issue
Block a user