toxic-johann / toxic-johann.github.io

my blog
6 stars 0 forks source link

# 图片上传 cdn 应该放在前端还是后端 #43

Open toxic-johann opened 6 years ago

toxic-johann commented 6 years ago

今天忽然看到别人讨论一个问题,图片上传 cdn 是否可以在前端完成。想了想,其实放前后端各有利弊。

问题 前端上传 后端上传 cdn
带宽 仅前端上传的带宽 还要加上后端中转的带宽 不关心,按使用流量计费即可
跨域 cdn 需支持跨域上传 无跨域问题 涉及上传问题,可能有相关控制
盗传 容易被人盗走相关签名机制,直接使用 cdn 用户不会直接触碰到 cdn 地址,cdn 更为安全。但是用户可以批量刷上传接口,因此上传接口要做校验。 一般 cdn 只做黄图过滤和频率限制。所以防止盗传应依靠用户自发。

其实想的比较多的还是盗传问题,黑客利用你的账号往 cdn 上灌东西。

cdn 的签名其实主要还是用于标记是谁上传的。一旦签名和加密方式泄漏了,其实用处就不大了。

如果是前端上传,一般这些密钥就默认公开了。那时候黑客就可以直接拿你的密钥直接调用 cdn 了。

因此如果后端上传,相对来说还是安全点。但是后端上传还是无法避免别人刷你的接口,即通过你提供的后端接口刷 cdn 接口。不过因为我们自己的业务接口有更多信息,所以可以在业务接口做相关的拦截和限制。

考虑到安全因素,我建议在后端上传。