欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

javascript - [已解决]网站如何存储涉及用户重要隐私的图片比较合适?

程序员文章站 2024-02-11 15:31:22
...
如何存储图片比如身份证,比较合适?

只能用户自己和网站后台能访问到图片,其他用户则不能访问(其他用户就算有图片img的src也不能够访问到图片)。

存本地空间估计不够用、存第三方可靠吗?有什么成熟的解决方案?

回复内容:

如何存储图片比如身份证,比较合适?

只能用户自己和网站后台能访问到图片,其他用户则不能访问(其他用户就算有图片img的src也不能够访问到图片)。

存本地空间估计不够用、存第三方可靠吗?有什么成熟的解决方案?

已经解决,看了upyun的接口,发现可以利用token防盗链的方式。

因为这种方式访问img需要带上_upt参数才行,

于是我们对于用户要真正能够访问图片mybucket.upaiyun.com//target.jpg前,需要做

  1. 判断当前登录的用户是否有权限访问/target.jpg

  2. 有权限访问,那么生成_upt参数(_upt参数是根据私有的token、限制在未来几分钟内才能被访问到的etime、以及文件url,这3个参数产生的)

  3. 把这个_upt追加到图片url里得到 mybucket.upaiyun.com//target.jpg?_upt=xxxxxxx

这样用户才能访问到图片,用户每次访问图片必须获得_upt参数,而_upt的获取则必须通过我们自己服务器的鉴权才行,而且_upt是有时效性的,超过我们规定的时间用户必须重新获取_upt才行。

javascript - [已解决]网站如何存储涉及用户重要隐私的图片比较合适?

upyun的文档

看下是否有基于ak + sk + 时间戳生成token的方案(使用生成的token在有效期内可以访问资源)。

1.保存的图片名称不要有规律可循.
比如可以 md5 当前上传图片的时间加上 n 位的随机数,生成的值用来做图片名称.
2.图片可以放到第三方cdn 上
比如七牛, ucloud ,速度和服务还是比较靠谱的.

你说的情况应该对图片文件进行对称加密,例如使用AES,而且对每个用户使用特定方式生成的密钥。因为图片应该不会经常使用,使用时在临时解密一下即可

现在文件存储的话,交给成熟的服务提供者(比如七牛什么的)来处理更方便,安全什么的他们帮你处理了,你只需要把文件托管上去,然后记录一下三方服务返回的信息(图片外链和一些其他信息)即可。关于访问权限的话,需要自己在程序逻辑层来作判断了。