核心价值通过 HMAC 签名与过期时间控制静态资源访问,降低未授权分享风险。在 Edge 路由中高性能验证并安全代理到后端或 CDN。实现export const runtime = 'edge'

const SECRET = 'super-secret'

async function hmac(input: string) {

const enc = new TextEncoder()

const key = await crypto.subtle.importKey('raw', enc.encode(SECRET), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign'])

const mac = await crypto.subtle.sign('HMAC', key, enc.encode(input))

return btoa(String.fromCharCode(...new Uint8Array(mac)))

}

export async function GET(req: Request) {

const url = new URL(req.url)

const path = url.searchParams.get('path') || ''

const exp = Number(url.searchParams.get('exp') || 0)

const sig = url.searchParams.get('sig') || ''

if (!path || !exp || !sig) return new Response('Forbidden', { status: 403 })

const now = Math.floor(Date.now() / 1000)

if (now > exp) return new Response('Expired', { status: 403 })

const expected = await hmac(`${path}:${exp}`)

if (sig !== expected) return new Response('Forbidden', { status: 403 })

const target = `https://cdn.example.com/${path}`

const res = await fetch(target)

if (!res.ok) return new Response('Not Found', { status: 404 })

return new Response(res.body, {

headers: {

'Content-Type': res.headers.get('content-type') || 'application/octet-stream',

'Cache-Control': 'private, max-age=60',

},

})

}

治理建议令牌仅覆盖资源路径与过期时间,避免包含敏感信息;令牌有效期应短且可撤销。对下载量大的资源结合 `Range` 支持与限速策略;并记录审计日志以便追踪。结论Signed URL 在静态资源场景下易于落地且高效,结合边缘验证可显著提升访问控制的安全性与可用性。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部