域名小知识:Public Suffix List

简介:

Webkit 中,通过 document.domain,可以将 domain 设置到最后一级(最后一个点之后的内容)。由于域名最后实际上有一个 .(例如https://imququ.com. 可以正常访问), 所以甚至可以将document.domain 设置为空字符串。

根据 HTML5 文档的描述:在 JavaScript 中通过 document.domain 设置当前页面的 domain 时,如果新值不等于当前值,也不是 IPv4 和 IPv6 格式时,需要判断新值是否在 PSL(Public Suffix List,公共后缀列表)中,如果存在必须抛出 SecurityError,终止后续流程。

PSL 是由 Mozilla 创建的公共资源,官网是 publicsuffix.org。它由两部分组成:一部分是由 ICANN(The Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)提供的 TLD(Top Level Domain,顶级域名)列表;一部分是由个人或机构提供的 PRIVATE 列表。完整的 PSL 可以从这个地址获得。

ICANN 维护的 TLD 列表好理解,例如最常见的 com、net、org 等等都属于这个列表。为大家所熟知的 TLD 最多也就几十个,那么完整的 TLD 列表包含多少记录呢?我统计了一下,截至到当前:

TLD 列表中一共有 7247 条记录;

最长的记录有 35 个字符,例如:posts-and-telecommunications.museum;

级别最多的记录有 4 级,例如:pvt.k12.ma.us;

PRIVATE 列表由个人或机构自行添加。例如我想把 imququ.com 的二级域名开放给其它人使用,同时还想让这些二级域名之间相互隔离,我可以申请在 PRIVATE 列表中加上 imququ.com。目前在 PRIVATE 列表中,有很多都是 Amazon Web Services 添加的,目的就是为了隔离用户。

现在很多提供 App Engine 服务的厂商一般都会给用户提供二级域名,例如 example.duapp.com,这会带来很大的安全隐患:假如用户将 document.domain 设置为大域;或者在设置 cookie 时指定 domain 为大域,都会导致网站完全暴露给其它二级域名用户。那如果用户在使用过程中避免了这些问题,是不是就高枕无忧了呢?也不是!其它用户如果在大域写入大量 Cookie,一样可以对你的二级域名造成拒绝服务攻击,想了解细节的同学请看这篇文章:超大 Cookie 拒绝服务攻击。

这也是为什么亚马逊要把那么多 AWS 域名都加到 PSL 的 PRIVATE 列表中的原因。国内的服务商,我看到 Sina 的 SAE 也做了相关处理,这一点上 SAE 确实比较细致。

目前 PSL 中的 PRIVATE 记录统计如下:

PRIVATE 列表一共有 557 条记录;

最长的记录有 36 个字符,例如:ap-northeast-1.compute.amazonaws.com;

级别最多的记录有 5 级,例如:s3.cn-north-1.amazonaws.com.cn;

二者加起来,完整的 PSL 一共有 7804 条记录。

PSL 做为公共资源,可以被用在很多场景上,例如 Firefox 用它在地址栏高亮 URL 的关键部分。PSL 更重要的用途是用在浏览器同源策略上:例如通过 document.cookie 设置 cookie,或者通过 document.domain 设置当前 domain,都不允许将 domain 设置为 PSL 中的记录。

Webkit 一直以来只在设置 cookie 时使用了 PSL,前面提到的 Chrome 的那个 Bug 纯属从 Webkit 继承而来。大约在两年前(详情),Chrome 解决了这个问题。以下分别是用最新的 Chrome、Firefox 以及 Microsoft Edge 的测试结果:

域名小知识:Public Suffix List

域名小知识:Public Suffix List

然而,Safari 至今为止依然没有修复这个问题,以下是在最新的 Safari 中的测试结果:

域名小知识:Public Suffix List

原文发布时间为: 2016年01月31日
本文作者:Qu的小站
本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。
相关文章
|
Linux
Linux手动更新时间Linux同步集群其他节点时间
Linux手动更新时间Linux同步集群其他节点时间
253 0
|
编解码 监控 测试技术
如何优化OBS的推流设置以提高直播质量
【10月更文挑战第7天】如何优化OBS的推流设置以提高直播质量
|
人工智能 Cloud Native API
向量检索服务DashVector的体验
向量检索服务DashVector的体验
451 2
|
安全 网络安全 数据安全/隐私保护
网站为何会显示“不安全”?又该怎么办呢?
这篇文章概述了导致网站显示为“不安全”的常见原因,并提供了相应的解释和建议。了解这些信息对于网站管理员和普通用户都是重要的,因为它有助于提高网络安全意识和保护个人信息不被泄露。
5253 0
|
5月前
|
人工智能 自然语言处理 监控
AI Ping: 一站式大模型服务评测与API调用平台技术解析
在当前大模型应用爆发式增长的背景下,开发者面临着一个共同的痛点:如何高效、低成本地调用大模型服务? 本文将深入解析AI Ping如何通过其vibe coding工具链实现"零成本"接入三大主流免费模型,帮助开发者在日常开发中显著降低AI使用成本。
AI Ping: 一站式大模型服务评测与API调用平台技术解析
|
存储 人工智能 搜索推荐
WiseMindAI:一款AI智能知识库,数据完全本地化,支持文档对话、10+种文档、10+AI大模型等
WiseMindAI 是一款由 Chris 开发的 AI 智能学习助手,支持数据完全本地化存储,确保用户隐私安全。它兼容多种文档格式(如 PDF、Markdown 等),并提供 AI 文档总结、智能笔记、沉浸式翻译、知识卡片生成等功能。此外,WiseMindAI 支持 10+ 大语言模型和自定义 AI 插件,适用于 Windows 和 Mac 平台,支持简体中文、繁体中文及英文。
1459 74
WiseMindAI:一款AI智能知识库,数据完全本地化,支持文档对话、10+种文档、10+AI大模型等
|
消息中间件 JSON 数据库
探索Flink动态CEP:杭州银行的实战案例
探索Flink动态CEP:杭州银行的实战案例
723 5
|
人工智能 机器人 API
一键打造你的专属钉钉AI助手
【8月更文挑战第7天】一键打造你的专属钉钉AI助手
1229 15
一键打造你的专属钉钉AI助手
|
Swift
[!] Unable to determine Swift version for the following pods:
[!] Unable to determine Swift version for the following pods:
509 0
|
小程序 前端开发 JavaScript
小程序的详细开发流程是什么?
【10月更文挑战第16天】小程序的详细开发流程是什么?
1713 0