静态文件防盗链的一种思路

发布时间:2021-04-29

在我们的系统中,总会有一些资源需要保护起来不被盗走,如果是动态接口可以通过验证权限来保护,静态资源大多需要对外开放,比较难以保护,本文就介绍保护静态文件资源一种思路——那就是使用 HTTP 中 Referer 头。

初识 Referer

Referer 是 HTTP 协议规定的一个请求头字段,用来表述 “来源” ,也就是你是从哪里知道我们的网站的,点这里查看MDN介绍。现代浏览器中,一般会自动加上该字段,告诉服务器 “来源” 是谁,简单来说也就是上一个打开的页面是什么。不信的话,可以打开 Nginx 的日志查看。谷歌分析这些追踪器也会使用这个信息来告诉你都有谁链接到你的网站。

Referer 怎么防盗

介绍了 Referer ,那 Referer 怎么使用才能防盗呢?我们先来捋一捋用户浏览一个网站的步骤主要有:用户输入URL => 浏览器根据输入发送请求 => 服务器接收请求,解析并返回响应 => 浏览器接收响应并解析 => 根据解析的资源继续请求需要的资源。不管是静态还是动态,入口文件(绝大部分是html)总是第一个解析,然后别的资源(css,js,图像,视频等)都是根据html定义继续请求。

所以,根据上述步骤可以得出,只有第一个请求的Referer不一样,有可能是搜索引擎,也有可能是外链/内链,还可能是空,但是对于用到的其他资源,referer都是改网站自己。说到这,聪明的你应该也想到了,那我只要判断请求的referer和请求的地址,两个的Host或者Domain是否一致即可。若不一致则说明有外人在盗用我们的资源。

其他阅读

Web前端中实现自定义右键菜单

在原生的桌面应用中,右键菜单是个很常见也很常用的东西,但是在Web应用中,由于浏览器自带了右键菜单,所以我们很少见到应用有自己的右键菜单,但不常见并不代表没有,本文就会介绍一个右键菜单的实现。

查看原文

Unity控制台打印彩色日志

在 Unity 开发过程中,我们经常需要使用 Debug.Log 来输出调试信息。但是在繁杂的控制台信息中,一些重要的信息很容易就被忽略。使用彩色日志可以大幅提升Unity开发中的调试效率。

查看原文

Open Graph优化SEO

Open Graph(OG)协议作为社交分享优化的核心技术,不仅决定了内容在社交媒体平台的展示效果,还间接影响搜索引擎优化(SEO)的表现。本文将从作用解析、核心标签配置到动态生成策略,全面介绍 Open Graph 的应用。

查看原文

IIS 设置跨域问题

之前说过nginx设置跨域,今天记录以下IIS设置跨域

查看原文

HTTP状态码

HTTP状态码为客户端提供了一种理解事务处理结果的边界方式。本文列出一些原因短语,所使用的是HTTP/1.1规范所定义的。

查看原文