xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

Referrer Policy for Internet Security All In One

Referrer Policy for Internet Security All In One

网络安全之引荐人策略

Referrer Policy

  1. Referrer-Policy: no-referrer
  2. Referrer-Policy: no-referrer-when-downgrade
  3. Referrer-Policy: origin
  4. Referrer-Policy: origin-when-cross-origin
  5. Referrer-Policy: same-origin
  6. Referrer-Policy: strict-origin
  7. Referrer-Policy: strict-origin-when-cross-origin
  8. Referrer-Policy: unsafe-url

The Referrer-Policy HTTP header controls how much referrer information (sent with the Referer header) should be included with requests.
Aside from the HTTP header, you can set this policy in HTML.

Referrer-Policy HTTP 标头控制请求中应包含多少引用者信息(与 Referer 标头一起发送)。
除了 HTTP 标头之外,您还可以在 HTML 中设置此策略。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy

冷知识:Referer 是单词拼写错误,为了兼容性,而导致的历史遗留 bug 💩

  • Referrer-Policy 引用策略 ✅
  • referer 引用来源 ✅

如何破解 Referrer Policy: strict-origin-when-cross-origin 问题 ???

再发送请求时候,修改或者绕过 Referrer-Policy ?

async function test() {
  async function parseHTML() {
    const url = `http://abczzz.cn/archives/136?page=1`
    const html = await fetch(url).then(res => res.text())
    console.log(`html =`, html)
  }
  await parseHTML()
}
await test();

应用场景

  1. Web 资源防盗链

盗链: 是指在自己的页面上展示一些并不在自己服务器上的一些内容, 获取别人的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容;
一般被盗链的都是图片、 可执行文件、 音视频文件、压缩文件等资源;
通过盗链的手段可以减轻自己服务器的负担;

防盗链原理: 通过 Referer 或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以追踪到显示它的网页地址, 一旦检测到来源不是本站,则进行阻止非法访问或者返回指定的版权警告页面或不返回任何数据

demos

CORS 请求, 是否返回 HTML 内容

  1. 浏览器客户端,同域名 ✅

  1. 服务器端, 不存在跨域问题,Node.js ✅

image

  1. 浏览器客户端,CORS 跨域名 ❌

Referrer Policy: strict-origin-when-cross-origin

  1. 手动取消请求 referrer ❌ 不好使
<meta name="referrer" content="no-referrer">

image

  1. 客户端在请求时, 无法修改 HTTP header 的保留字段 referer

image

设置 referer 响应头是无效的,这是由于浏览器为了安全起见,无法手动设置部分保留字段,不幸的是 Referer 恰好就是保留字段之一

https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer

(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!

引荐来源 (Referer) 和引荐来源政策 (Referrer-Policy) 最佳实践

由于规范中的原始拼写错误,Referer 标头缺少一个 R
JavaScript 和 DOM 中的 Referrer-Policy 标头和 referrer 的拼写是正确的。

<meta name="referrer" content="strict-origin-when-cross-origin" />

fetch(url, {referrerPolicy: 'no-referrer-when-downgrade'});

image

https://web.dev/i18n/en/referrer-best-practices/

https://web.dev/i18n/zh/referrer-best-practices/

https://web.dev/same-site-same-origin/

refs

https://www.cnblogs.com/xgqfrms/p/17655286.html#5205339



©xgqfrms 2012-2021

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2023-08-25 16:58  xgqfrms  阅读(30)  评论(1编辑  收藏  举报