- 盗链是什么? 为什么要防?
在自己页面上显示一些不是自己服务器的资源
(图片、音频、视频、css、js等)由于别人盗链你的资源会加重你的服务器负担,所以我们需要防止
可能会影响统计
- 防盗链是什么? 有哪几种方式?
防止别人通过一些技术手段绕过本站的资源展示页,盗用本站资源,让绕开本站资源展示页面的资源链接失效
大大减轻服务器压力
1、Referer (易伪造referer,安全性低)
2、加密签名 (安全性高)
- 防盗链的工作原理
通过Referer,服务器可以检测到访问目标资源的来源网站,如果是资源文件,则可以跟踪到显示它的网页地址。一旦检测到来源网站不是本站进行阻止
通过签名,根据计算签名的方式,判断请求是否合法,如果合法则显示,否则返回错误信息
- Referer实现
以Nginx为例,前提加载
ngx_http_referer_module模块
//指令valid_referers 全局invalid_referer
location ~* \.(gif|jpg|png|webp)$ {
valid_referers none blocked domain.com *.domain.com ;
if ($invalid_referer) {
return 403; #rewrite ^/ http://www.domain.com/403.jpg; } }
注意:为什么要none呢?因为如果通过浏览器直接访问资源,referer就是为空,所以这种方式不能彻底阻挡住盗链。
- 加密签名
以Nginx为例,前提加载第三方模块
HttpAccessKeyModule
实现防盗链
location ~* \.(gif|jpg|png|webp)$ {
accesskey on;
accesskey_hashmethod md5; accesskey_arg key; accesskey_signature "mysrc$remote_addr"; }