11.25 配置防盗链
11.26 访问控制Directory
11.27 访问控制FilesMatch
配置防盗链
盗链一般是为了节省流量、提高访问速度。对于被盗链者来说一点益处没有,所以许多网站都做了防盗链设置。apache通过限制referer来实现防盗链的功能。
虚拟主机配置文件增加如下内容
<Directory /data/wwwroot/www.123.com>
SetEnvIfNoCase Referer "http://www.123.com" local_ref
SetEnvIfNoCase Referer "http://123.com" local_ref
SetEnvIfNoCase Referer "^$" local_ref
<filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
Order Allow,Deny
Allow from env=local_ref
</filesmatch>
</Directory>
order定义了访问控制的顺序,上例是先allow后deny,不关顺序怎样都会执行完下面的所有规则。local_ref类似标签。上面例子定义了三个标签,第三个是空referer,就是直接访问。不容易理解空referer就先思考referer的定义:跳转前的网址。空referer就是没有跳转前的网址,即直接访问。
可以某一论坛发一帖子然后在浏览器测试。也可以用curl来试验。curl使用-e参数来指定referer。
访问控制Directory
用户认证还是存在风险,比如密码泄漏。如果访问者ip固定,可以通过ip的访问控制来降低风险。
ip控制核心配置文件内容
<Directory /data/wwwroot/www.123.com/admin/>
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
order定义控制顺序,下面的语句一句order定义的顺序执行。127.0.0.1指的是来源ip。
curl测试状态码为403则被限制访问了。
访问控制FilesMatch
directory控制目录,filesmatch匹配相应文件。这和用户认证中设置类似。
核心配置文件内容
<Directory /data/wwwroot/www.123.com>
<FilesMatch "admin.php(.*)">
Order deny,allow
Deny from all
Allow from 127.0.0.1
</FilesMatch>
</Directory>
filesmatch不严格区分大小写。