> 文章列表 > nginx referer

nginx referer

nginx referer

介绍

在计算机网络领域中,referer是HTTP协议头的一部分,表示访问当前页面的上一个页面的地址。在nginx服务器中,referer可以用于防盗链,即限制只有特定来源的访问才能展示资源。

使用referer

在nginx中,referer可以通过配置文件使用。通过这个配置,可以允许或禁止访客来自不同来源的访问,防止其他网站直接显示图片、视频等多媒体资源。

例如,如果你有一个图片(cat.jpg)保存在服务器上,想要允许只有自己的网站才能访问这个图片。这时,你可以在配置文件中加上以下代码:

location /images/ { valid_referers none blocked example.com *.example.com; if ($invalid_referer) { return 403; } }

其中example.com将允许你的主站和所有子域名,如img.example.com。

referer的风险

referer伪造是一种跨站伪造攻击(Cross-site forgery)中的一种。攻击者在构造访问链接时,伪造referer的来源,可能会带来一些风险。例如,攻击者可能会实现CSRF(跨站请求伪造)攻击,伪造提交表单

为了防止CSRF,开发者可以使用CSRF Token,例如将在表单中生成一个随机值,并且将其存储在session中,每次验证请求中的Token和服务器端存储的Token是否一致,如果不一致,拒绝表单提交。

referer的替代品

相比referer,服务器端提供了一种新的解决方案,即Origin,这是W3C规范中的一部分。在最新的浏览器上,Origin可以在请求头中发送,表示请求的源,可用于验证跨域请求、与CSP(Content Security Policy)一起使用以限制资源加载、或验证可以接受资源上传的来源。

结论

referer虽然可以用于防盗链,但是也需要注意其可能带来的风险。不仅如此,最新的安全技术,如CSRF Token和Origin也可以在一定程度上保护我们的网络安全。当然,正确、安全地使用referer仍然可以帮助我们解决很多问题。