最近在做一些事情的时候发现有的网站做了图片的防外链功能,简单来说不是本网站的url访问不了本站的图片、仔细分析了一下,想到了用nginx的反向代理设置referer可以解决这个问题,再次证明了web网站所有来自浏览器端提交的东西都不靠谱,都需要验证。
想想防外链大都是通过检查请求中的http referer来实现的(也可以用token来做仿外链,这个比较难搞)。如果通过反向代理来动态指定http referer是不是可以解决问题。马上动手.
location /get/
{
set $hostx "";
set $addrs "";
if ( $uri ~ "^/get/http./+([^/]+)/(.+)$") {
set $hostx $1;
set $addrs $2;
}
resolver 127.0.0.1;
proxy_pass http://$hostx/$addrs;
proxy_set_header referer "http://$hostx";
}
注意resolver要指向一个有效的dns服务器(快速查看本机dns服务器地址的命令:cat /etc/resolv.conf)
可以结合nginx的location的配置来看 : http://www.eit.name/blog/read.php?497
~打下无节操有底线广告,欢迎关注: 点我