防盗链原理及配置(Httpd服务器)

-- TOC --

防盗链是为了阻止对网站资源的非正常访问。

防盗链原理

所谓对网站非正常访问,比如网站的某个页面有一张图片,正常访问需要打开整个页面查看图片及其相关资源,非正常访问是网站只收到了一个对此图片的请求,没有其它的,而且来路是其它网站的页面。

这种非正常的访问,包括网站对外提供的所有资源,不限于图片。

这种非正常的访问,显然对网站本身是没有什么好处的,资源被访问了,但是自己的页面却没有被打开让人看过。这就叫盗链!防盗链,防的就是这种对网站资源的非正常访问。

由于网站对外提供的资源可能很多,哪些资源需要防,哪些不需要,需要自己根据情况判断。

图片防盗链

图片防盗链很常见,一般都是通过对请求的Referer字段的判断来实现。

浏览器在获取到HTML页面内容之后,会继续请求页面中的图片资源,此时对于图片的HTTP请求,header的referer会设置为此HTML页面的URL,Web Server可以据此判断这个对图片的请求是否“合法”。举例如下:

# 图片防盗链配置
RewriteEngine On
RewriteCond %{REQUEST_URL} !^/pics/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^https://cs.pynote.net.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp|mp3)$ https://cs.pynote.net/pics/nolink.jpg [L,NC]

NC 表示不关心大小写,L 表示 Last。

这个配置的含义是:如果请求的URI是图片(指向存放图片的路径),如果Referer不是本站域名,则返回一个特定的图片,以示此访问有问题。

我对图片防盗链存在一点疑惑,即搜索引擎在访问图片的时候,referer是什么?图片搜索的时候,网站的图片能否被索引?而且,本站也没有什么图片值得防,本来也是来自于网络,所以干脆就不管了......:)

本文链接:https://cs.pynote.net/net/httpd/202110045/

-- EOF --

-- MORE --