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

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

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

初识 Referer

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

Referer 怎么防盗

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

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

发布时间:2021-04-29
其他阅读

新版本.Net关于Process.Start的问题

.Net 开发中,试用 Process.Start() 来启动一个新进程,当我们传入的是具体文件或者链接的时候,系统也会根据默认打开方式打开对应的进程。但是在新版本的 .Net 中,试用 Process.Start() 来打开文件或者链接的时候,会抛出 System.ComponentModel.Win32Exception 的错误,提示系统找不到指定的文件。

查看原文

Nginx配置反向代理和负载均衡

Nginx是一个流行的Web容器,作为服务的入口,使用反向代理和负载均衡,达到隐藏和保护内部服务安全的作用,本文会描述Nginx反向代理和负载均衡的配置。

查看原文

C#获取电脑的网卡地址

使用C#开发Windows应用,需要进行特定网卡绑定的时候我们需要获取电脑本机的网卡地址,本文会介绍几种获取电脑网卡地址的方法。

查看原文

JSON是什么

在现代化 Web 应用开发中,广泛使用一种名为 JSON 的数据交换格式。JSON 是一种轻量级数据交换格式,在不同系统之间提供标准且高效的数据交换。

查看原文

WPF中CornerRadius是什么属性

在WPF中,CornerRadius 属性我们经常需要使用到,它的作用是用来设置控件的四个圆角,在 BorderButton 等控件中使用。等同于 css 中的 border-radius 设置。

查看原文