fix(videos): reject bad-format id in idAvailable (P2 review fix)
`videoIdExists()`는 잘못된 형식의 ID 에 대해 false 를 반환하기 때문에
형식 오류가 곧바로 `{available:true}` 로 흘러나가는 계약 위반이 있었다.
이제 빈 값 검사 직후 `isSafeVideoId` 로 형식을 먼저 거르고,
형식 오류면 `{available:false, reason:'형식: 영문/숫자/_/- (1~64자)'}`
로 응답한다. 클라이언트 regex 와 동일한 형식이라 메시지도 일관된다.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
|||||||
getFolder,
|
getFolder,
|
||||||
getFolderByPath,
|
getFolderByPath,
|
||||||
getVideo,
|
getVideo,
|
||||||
|
isSafeVideoId,
|
||||||
listChildFolders,
|
listChildFolders,
|
||||||
listTopFolders,
|
listTopFolders,
|
||||||
listVideosInFolder,
|
listVideosInFolder,
|
||||||
@@ -352,6 +353,14 @@ opRouter.get('/op/videos/idAvailable', requireAuth, (req, res) => {
|
|||||||
res.json({ ok: true, available: false, reason: '비어 있음' })
|
res.json({ ok: true, available: false, reason: '비어 있음' })
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if (!isSafeVideoId(id)) {
|
||||||
|
res.json({
|
||||||
|
ok: true,
|
||||||
|
available: false,
|
||||||
|
reason: '형식: 영문/숫자/_/- (1~64자)'
|
||||||
|
})
|
||||||
|
return
|
||||||
|
}
|
||||||
const available = !videoIdExists(id)
|
const available = !videoIdExists(id)
|
||||||
res.json({ ok: true, available })
|
res.json({ ok: true, available })
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user