工作中需要对音频和图片进行防盗链处理,数据存储使用第三方服务,在使用的过程中遇到的一些注意事项,特与大家分享。

防盗链的原理和应用场景

具体使用可参看此篇文章《防盗链》,里面已经详细的介绍了防盗链的原理及使用场景,和高级防盗链。这里就不再照本宣科。

具体使用中遇到的问题

项目中使用的是阿里云的OSS服务,官网和云服务采用的通信都是http的,这两天将自己的服务通过证书设置为https的请求。在设置之前,所有的资源都可以正确访问,但当设置为https之后,发现云服务上的资源无法访问了。

在网上搜索资料有以下解决方案:

  • 将云服务防盗链中的规则设置为“允许referer为空”,很显然,这无法达到要求,因为一旦设置为空用户不传此内容便可轻易绕过防盗链。
  • 在meta中设置referer,并将content内容设置为always,尝试了一下貌似没有效果。
  • 统一采用https。其实云服务是同时支持http和https两种类型的请求,当时项目中的网络请求升级为https请求时,只需将云服务的请求也改为https即可。

其中最后一种方案相对来说在初级版本中完整的解决了问题。简单分析一下出现无法访问的原因吧。当项目中使用https,而云服务采用http时,浏览器为了安全,会强制将referer设置为空。因此,云服务无法提供内容展示。在这里有的解决方案走入误区:既然referer为空我就设置允许空不就可以了?这种误区容易导致,如果别人想利用你的资源,只需将网站升级为https即可无限制的使用你的资源。



防盗链使用过程中遇到的问题插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://choupangxia.com/2019/07/06/%e9%98%b2%e7%9b%97%e9%93%be%e4%bd%bf%e7%94%a8%e8%bf%87%e7%a8%8b%e4%b8%ad%e9%81%87%e5%88%b0%e7%9a%84%e9%97%ae%e9%a2%98/