防盗链概念

基础概念

如果你刚刚开发完一个没有防盗链的带有文件下载功能的网站,然后上传几个时下非常热门的软件或电影并在网站内公布下载地址。不用多久就会发现网速出奇地变慢,甚至服务器托管中心的服务员会热情地打电话告诉你的网站流量很大,估计是网站受欢迎起来了,问你是不是该考虑加钱租用带宽更宽但价格更贵的网线了。在这个值得庆祝的时候赶快打开网站分析工具,看看有多少人来光顾你的网站了吧,如果发现访客每天才十来个人,很遗憾地告诉你:你的网站资源不幸地被人盗链了。

网站资源被盗链简单来说就是用户在别的网站,通过你的网站下载资源,被盗链的几种可能情况:
1、在人气非常旺的网站、论坛、社区的网页里直接引用了你网站上的图片,或者直接在其他网页里嵌入了你网站上的mp3。
2、在人气非常旺的网站、论坛、社区里提供了你的资源的下载地址。
3、可能被一些下载软件列入了"资源候选名单",当其他人用下载工具下载相同的文件时,下载软件会自动找上门并且从你的服务器下载。

避免防盗链之判断引用地址

这个方法是最早及最常见的方法。所谓判断引用地址,就是判断浏览器请求时HTTP头的Referer字段的值。在正常情况下当用户在浏览http://feige.com/abc.html时点击一个链接去到http://feige.com/jacky.mp3文件时,浏览器在发出请求资源时还会附带当刻浏览器所处的页面地址(即http://feige.com/abc.html),所以当你的网站程序接收到下载资源请求的时候,先判断http的referer字段的值,如果是从 自己的域名(feige.com)过来的,则可以认为是合法的连接请求,否则就返回一个错误的提示信息。

这种方法通常用于图片、mp3这种容易被人用html"嵌入"到其他网站的资源,使用这种方法可以防止你的图片直接出现在别人的网页里(或者防止mp3直接被其他网站嵌入到flash播放器里),不过访客使用下载工具还是可以轻松下载,因为现在的下载工具一般会自动用你的域名构造一个引用地址,所以如果想再进一步防范的话,可以使用一个对应表限制每个资源的引用地址,例如将 jacky.mp3 的引用地址限制为http://feige.com/abc.htmlid=12345,这样下载工具就不太可能构造一个"正确"的引用地址了。

原文地址:https://www.cnblogs.com/feiqiangsheng/p/11296014.html