Referrer Policy for Internet Security All In One
Referrer Policy for Internet Security All In One
网络安全之
引荐人策略
Referrer Policy
- Referrer-Policy:
no-referrer
- Referrer-Policy: no-referrer-when-downgrade
- Referrer-Policy: origin
- Referrer-Policy:
origin-when-cross-origin
- Referrer-Policy: same-origin
- Referrer-Policy: strict-origin
- Referrer-Policy:
strict-origin-when-cross-origin
- 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();
应用场景
- Web 资源
防盗链
盗链
: 是指在自己的页面上展示一些并不在自己服务器上的一些内容, 获取别人的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容;
一般被盗链的都是图片、 可执行文件、 音视频文件、压缩文件等资源;
通过盗链的手段可以减轻自己服务器的负担;
防盗链
原理: 通过 Referer 或者签名,网站可以检测目标
网页访问的来源网页,如果是资源文件,则可以追踪到显示它的网页地址, 一旦检测到来源不是本站,则进行阻止非法访问或者返回指定的版权警告页面或不返回
任何数据
demos
CORS
请求, 是否返回HTML
内容
- 浏览器客户端,同域名 ✅
- 服务器端, 不存在跨域问题,Node.js ✅
- 浏览器客户端,CORS 跨域名 ❌
Referrer Policy: strict-origin-when-cross-origin
❌
- 手动取消请求 referrer ❌ 不好使
<meta name="referrer" content="no-referrer">
- 客户端在请求时, 无法修改 HTTP header 的保留字段
referer
❌
设置 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'});
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, 禁止转载 🈲️,侵权必究⚠️!
本文首发于博客园,作者:xgqfrms,原文链接:https://www.cnblogs.com/xgqfrms/p/17655904.html
未经授权禁止转载,违者必究!