web资源防盗链
什么是防盗链
盗链是指在自己的页面上展示一些并不在自己服务器上的内容
常见的是小站盗用大战的图片 音乐 视频 软件等资源
通过盗链的方法可以减轻自己的服务器的负担因为真实的空间和流量均是来自别人的服务器
防盗链,防止别人通过一些技术手段绕过本站的资源展示页面 盗用本站的资源 让绕开本站资源展示页面的资源链接失效
可以大大减轻服务器及贷款的压力
工作原理
通过referer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址
一旦检测到来源不是本站即进行组织或者返回指定的页面
通过计算签名的方式 判断请求是否合法 如果合法则显示 否则返回错误信息
referer
nginx模块 ngx_http_refer_module用于阻挡来源非法的域名请求
nginx指令 valid_referers 全局变量 $invalid_referer
invalid_referer none |blocked| server_names|string....
none:“referer”来源头部为空的情况
blocked referer”来源头部不为空,但是里面的值被代理或者防火墙删除了 ,这些值都不以 http://或者 https://开头
server_names “referer”来源头部包含当前的server_names
可以 但是有漏洞 伪造referer
location~.*\.(gif|jpg|png|flv|swf|rar|zip)$
{
valid_referers none blocked ling.com *.imooc.com;
if($invalid_referer)
{
#return 403;
rewrite ^/http://www.ling.com/403.jpg;
}
}
可以使用加密签名
使用第三方模块 httpAccessKeyModule实现 nginx防盗链
accesskey on|off 模块开关
accesskey_hashmethod md5|sha-1签名加密方式
accesskey_arg GET参数名称
accesskey_signature加密规则
location~.*\.(gif|jpg|png|flv|swf|rar|zip)$
{
accesskey_on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "ling$remoteaddr";
}
$sign=md5('ling'.$_SERVER['REMOTE_ADDR']);
echo '<img src="./logo.pnh?sign'.$sign.'">';
防盗链的工作原理
防盗链的实现方法
网友评论