公司有个站被人仿了,直接引用源站资源,因为在某些数据库需要被引用,所以白名单referer规则不太好设,只能暂时将仿站referer屏蔽。
  1. 使用nginx的map模块和正则匹配该域名和IP的请求,写成单独的conf文件block_referer.conf

    map $http_referer $block_ref_urls {
        default 0;
        ~(?i)(^.*xxxx.com.*$) 1;
    #屏蔽的IP  103.129.97.141  1;
    }
  2. 在主配置nginx.conf中include以上配置,注意需要在http中include,而不是server中include,否则会提示Nginx: [emerg] "map" directive is not allowed here in xxxx

    include block_refer.conf;
    #注意路径
  3. 在对应域名的conf中引用该屏蔽规则

    if ($block_ref_urls) {return 403;}

仿站已无法直接referer源站的资源:

image.png

但其实这个做法治标不治本,对方直接伪造referer就可以轻松突破,还是得做更深层次的安全措施,比如套cdn,在cdn层面做防盗链,URL鉴权之类的手段,更为安全。

最后修改:2022 年 01 月 21 日
如果觉得我的文章对你有用,请随意赞赏