在Next.js中用JSON文件存储视频链接是否安全?拟部署Vercel
问题解答
核心结论
部署到Vercel后,src文件夹内的文件不会被前端用户直接访问到,你的videos.json是安全的。
原因说明
- Vercel部署Next.js(从你的API路由格式判断你用的是Next.js)时,只会把构建后的生产产物(比如
.next目录)部署到服务器,src属于源码目录,不会被暴露到可访问的公开路径中。 - 你的API路由运行在服务器端,只有服务器代码能读取
src/content/videos.json,前端用户无法通过URL直接请求到这个文件。
安全注意事项
虽然JSON文件不会泄露,但你需要确保权限验证逻辑的严谨性:
- 务必完善
isUserPremim的验证逻辑:比如用JWT令牌校验用户身份,或者集成成熟的身份验证方案,避免用户伪造权限。 - 视频ID本身的安全性:如果视频平台的ID是公开可播放的(比如YouTube公开视频ID),就算用户拿到ID也能直接播放,这种情况下你需要给视频设置私有权限(比如平台的未公开视频,需要签名或特定权限才能访问),或者使用加密的视频ID,配合服务器端生成带权限的播放链接。
代码优化建议
你可以简化JSON文件的读取方式,不用手动fs.readFile:
// 直接import JSON文件(服务器端可用) import videos from '../content/videos.json' assert { type: 'json' }; export default async function handler(req,res) { const { videoSlug } = req.query; const isUserPremim = // 完善你的权限验证逻辑 if(!isUserPremim) return res.status(403).json("Not allowed!") const id = videos[videoSlug]; return id ? res.status(200).json(id) : res.status(404).json("Video not found"); }
内容的提问来源于stack exchange,提问作者Daffy Duck
相关产品推荐
相关产品推荐

