referer模块只提供变量以及修改变量的值。该模块默认是被编译进nginx中的,可以使用--without=http_referer_module禁用。
一、场景
referer模块能获取到HTTP请求头部的referer值,从而知道该请求来自哪个页面,该值和document.referer值一致,document.referer源自HTTP referer。
比如,我重新启动一个react项目,在项目中加入一个链接如下:
该链接的地址为x.threatbook.cn/,点击该链接,打开x社…
二、使用referer模块的目的
使用referer模块的目的是为了拒绝某些网站访问我们的站点资源。
三、思路
使用invalid_referer变量来判断是否合法。
四、指令
一共有三个指令:
-
valid_referers:可取值为none、blocked、server_names、string等,可出现的上下文为location、server。
-
referer_hash_bucket_size:值为一个size,表示hash表的大小,该hash表用于存放上面valid_referers值与域名的映射,提高访问速度。默认值为24字节。
-
referer_hash_max_size:bucket的最大个数。默认值为2048字节。
1、valid_referers
参数值如下:
-
none:当没有referer头部字段时,也允许访问。
-
blocked:有referer字段,但是referer字段为空时,也允许访问。
-
server_names:如果referer中站点域名和server_name中某一个域名相匹配,则允许改请求访问。
-
正则表达式:如果referer中的域名匹配上正则表达式,则允许访问。
2、invalid_referer变量
允许访问时,invalid_referer字段为空,不允许访问时,该字段为1。
攻击者可以伪造referer头部,并且成本非常低,所以referer的防盗不是特别好。