web资源防盗链
- 盗链是什么? 为什么要防?
在自己页面上显示一些不是自己服务器的资源(图片、音频、视频、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;
}
}
加密签名实现
以Nginx为例,前提加载第三方模块HttpAccessKeyModule
实现防盗链
location ~* \.(gif|jpg|png|webp)$ {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg key;
accesskey_signature "mysrc$remote_addr";
}
减少HTTP请求次数减少HTTP请求次数
动态页面静态化
优化数据库
使用负载均衡
使用缓存
使用CDN加速
CDN的作用: 解决由于服务端与客户端所在区域的不同,导致影响数据传输速度和稳定性问题,一句话总结就是让数据传输更快更稳定。