微信公众平台技术揭秘之Referer的妙用

Posted 狂胜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信公众平台技术揭秘之Referer的妙用相关的知识,希望对你有一定的参考价值。

最近在了解 Referer 的时候发现它可以用来做防盗链,于是我立刻联想到之前我们后台获取微信公众号图片和图文消息因为有防盗链图片显示不了的问题。那我是不是可以通过模拟一个 Referer 来欺骗微信,从而达到破解防盗链的目的呢?

说干就干,通过我用 postman 模拟请求发现这个思路确实可行,但是我们前端是用 img 标签然后浏览器渲染加载照片的,这个怎么模拟呢?遂百度,查到最简单的方式就是在html的head里添加Referer <meta name="referrer" content="never">,于是自己写了一个 demo 试了一下果然可行,但是这个方案之前就让前端试过,当时收到的反馈是不行,但我现在测试时可以的,也不知道当时时因为什么原因前端说不行的了,反正现在咱们知道原理了,就可以很好的利用 Referer 来解决微信公众号的防盗链问题了。

首先我们来解释一下 referer 做防盗链的原理吧,这里我将结合微信公众号后台为大家讲解。

首先登陆微信公众号后台,找到“素材库”,打开开发人员工具,我们看一下请求。

可以看到微信公众号后台在加载图片的时候是带有 Referer 的,那我们写一个测试网页,引入一张微信公众号的图片,然后 html 的 head 里添加 Referer 和不加 Referer 咱们对比一下。

 

head 里加了 Referer  图片能正常显示,那接下来我们看看不加 Referer 的情况

可以看到请求带了  referer 之后图片就加载不出来了

 除了防盗链的应用,微信公众平台还利用 referer 做了请求来源合法性校验,比如开放平台的
“登录授权的发起页域名”,公众号的“JS接口安全域名”和“网页授权域名”,小程序的“服务器域名”和微信支付的“支付安全目录”校验。

这里我们以开放平台为例子测试一下,可以看到当我们去掉了 referer 之后,微信公众平台校验登录授权的发起页域名就通不过了,如下图所示

虽然 referrer 可以被伪造,但是并不是所有的人都会,总的来说 referrer 还是可以作为一种比较初级的请求来源安全校验措施。

以上是关于微信公众平台技术揭秘之Referer的妙用的主要内容,如果未能解决你的问题,请参考以下文章

揭秘腾讯云上的机器学习平台TI-ONE

ASP.NET之MVC 微信公众号授权给第三方平台的技术实现流程一(获取第三方平台access_token)

微信公众号开发之模板消息

使用koa2开发微信公众号之网页授权

武汉微信开发文档之微信公众平台开发

微信开发之分清公众平台和开放平台公众号全局凭证和网页授权凭证