网络

返回:前端基础

同源与跨域(CORS)

::: tip 同源政策是网站安全的基础。https://domain-a.com 只能存取自己网站裡的资源 (图片、影片、源码代等),不允许网站 https://domain-b.com 来存取。想要存取跨来源资源必须在某些特定情况下才被允许。 :::

怎麽判断同不同源

只要 scheme、domain、port 一样就会被视为同源 (same-origin),其他则是不同源

在某些情况下跨来源是被允许的,不受同源策略限制

  • 跨来源嵌入通常被允许 (embed)
  • 像范例的 <script src=”…”></script><link rel=”stylesheet” href=”…”><iframe>、图片 <img><video>、或是 @font-face <object><embed>.等等都是跨来源嵌入
  • 跨来源写入通常被允许 (writes)
  • 跨来源读取通常被禁止 (reads)
  • domain-a.com 不能读取 domain-b.com 的 cookieXMLHttpRequestFetch API 也都无法被读取

::: warning 同源政策 (Same Origin Policy) 允许 HTML tag 产生的跨来源写入 (write)/嵌入 (embed)/读取 (read),但对于 JS 的跨来源 write/embed/read 是有限制的。 :::

::: tip 同源政策是浏览器专属,所以才会发生用 postman 可以拿到 API 回应但放到网站上就是会失败的状况。 :::

怎么设置

// 还是会针对特定网站开权限
Access-Control-Allow-Origin: https://foo.example

// 可以设定允许哪些 method,defult 是全部方法
Access-Control-Request-Method: POST, GET

// 允许 client side 带 cookie 等验证,defult 是 false
Access-Control-Allow-Credentials: true

preflight request

不是 simple request 都会先发一个 preflight request 确定 server 端有设定正确的相关 Http-Header,也就是会先问 server 是否允许这个 request,允许的话才会正式 request。像 HTTP PUT/DELETE method,或 Content-Type: application/json 都会先发 preflight request。

有同源政策的保护,我的网站就是安全的吗

Same Origin Policy 只是最基本的保护而已,实际上 attackers 还是可以聪明地找到漏洞攻击你的网站。例如 Cross-site scripting (XSS)可以欺骗网站来绕过同源政策的保护,这是一个很大的问题,因为同源政策下浏览器信任底下所有资料存取都是安全的,但这样被恶意注入利用很有可能就让你网站挂掉,更严重是用户敏感资料被洩漏,应该被保密的资料被坏人利用。

HTML5 Security Cheatsheet 这个网站蛮酷的,提供各种 XSS 变形手法程式以及范例可以上去玩玩看

相关错误收集

::: warning Cors Policy Issue:The request client is not a secure context and the resource is in more-private address space private. :::

解决方案

  1. 两种资源都改成https
  2. 做代理或改dns 两种资源都改成 内网或者外网ip
  3. 配置chrome选项为disable chrome://flags/#block-insecure-private-network-requests或者访问者资源加响应头 Access-Control-Allow-Private-Network

免费公共DNS

DNSPod Public DNS

拥有 80 多条国内线路和 4 条海外线路,有 BGP Anycast 技术,也是国内首家支持谷歌 ECS (edns-client-subnet) 协议的公共 DNS 解析服务。它只使用一个 IP,但有三地集群容灾和秒级自动故障切换,在国内大多数地方的测速数据都非常好,值得推荐。

::: tip IPv4 地址
首选:119.29.29.29 :::

AliDNS 阿里公共 DNS 解析服务

宣称全球数百台服务器组成的集群,拥有充足的带宽资源,目标是成为国内互联网基础设施的组成部分,支持 BGP Anycast 以及 ECS 技术。

::: tip IPv4 地址

首选:223.5.5.5

备用:223.6.6.6 :::

114 DNS

114 DNS 在国内的用户量相当巨大,其 DNS 解析成功率高,与 ISP 的 DNS 相比,能访问更多的国内外网站;号称纯净、无劫持、无需再忍受被强插广告或粗俗网站之痛苦;114DNS 做得比较早,有一定的技术积累,稳定性不错,尽管速度比前两者差一点点,但也都能让人满意。它还有一个特色,就是根据不同用途可以选择不同的 DNS 组。

::: tip 常规公共 DNS (干净无劫持)

首选:114.114.114.114 、备选:114.114.115.115

拦截钓鱼病毒木马网站 (保护上网安全)

首选:114.114.114.119、备用:114.114.115.119

拦截色情网站 (保护儿童)

首选:114.114.114.110、备用:114.114.115.110 :::

百度 BaiduDNS

百度 DNS 公共解析服务,支持 ipv4 和 ipv6。作为中国最大的搜索引擎,百度拥有一流的基础设施和强大技术实力,国内速度相当快!该服务快速稳定无劫持,智能拦截恶意网站,支持 BGP Anycast 和 ECS 技术。

::: tip IPv4 地址:180.76.76.76

IPv6 地址:2400:da00::6666 :::

360 DNS 派 (DNSpai Public DNS)

DNS 派是由 360 出品的免费公众 DNS 解析服务。它可以让网上冲浪更加稳定、快速、安全;为家庭拦截钓鱼网站,过滤非法网站,建立一个绿色健康的网上环境;为域名拼写自动纠错等。

::: tip 首选(电信/移动/铁通):101.226.4.6

备选(电信/移动/铁通):218.30.118.6

首选(联通):123.125.81.6

备选(联通):140.207.198.6 :::

CNNIC sDNS

sDNS (SecureDNS,简称 sDNS) 是由中国互联网络信息中心 CNNIC 与国内外电信运营商合作推出的免费公共云解析服务,旨在为用户提供高速、安全、智能的上网接入解析服务。sDNS递归云解析服务采用 IP Anycast+BGP 技术跨区域、跨运营商的分布式异构部署,比运营商提供的 DNS 更快更稳定。

::: tip IPv4 地址

首选:1.2.4.8

备用:210.2.4.8 :::

OneDNS

OneDNS 是一个安全、快速、免费的小众 DNS 服务。它能屏蔽恶意网站、摆脱无良 ISP 的DNS污染与劫持。同时横跨南北的高速线路加速您的网络连接。

::: tip IPv4 地址

首选:117.50.11.11

备用:117.50.22.22 :::

----

Google Public DNS (8.8.8.8)

来自 Google 提供的免费全球公共 DNS 服务,主要为了改进网络浏览速度、改善网络用户的浏览体验。这个基本上不用多做什么介绍了,可能它也是目前全球范围内使用量最大的公共 DNS 了,老牌、稳定、技术强劲。

::: tip IPv4 地址

首选:8.8.8.8

备用:8.8.4.4

IPv6 地址

首选:2001:4860:4860::8888

备用:2001:4860:4860::8844 :::

CloudFlare DNS (1.1.1.1)

CloudFlare DNS 是号称全球最快的 DNS 服务 (当然天朝不算在全球范围内 >_<), CloudFlare 是全球最大的 CDN / DDOS 防护服务提供商之一 (在国内与百度云加速合作),其遍布全球的基础设施资源极其丰富,资金和技术实力相当雄厚。在国外实测速度相当强劲,目前我已将海外的 VPS全部换到此 DNS,解析速度非常快,相当值得推荐!

::: tip IPv4 地址

首选:1.1.1.1

备用:1.0.0.1

IPv6 地址:

首选:2606:4700:4700::1111

备用:2606:4700:4700::1001 :::

IBM Quad9 (9.9.9.9)

IBM 、Global Cyber Alliance 和 Packet Clearing House 合作推出的免费 Quad9 公共 DNS 服务 (9.9.9.9),主打安全,它会智能屏蔽恶意网址、僵尸网络、钓鱼攻击和其它恶意主机相关联的域名,而且更注重隐私保护。对安全有需求的朋友可以使用这组 DNS。

::: tip IPv4 地址

首选:9.9.9.9

备用:149.112.112.112

IPv6 地址

首选:2620:fe::fe

备用:2620:fe::9 :::

Cisco OpenDNS

::: tip IPv4 地址

首选:208.67.222.222

备用:208.67.220.220

IPv6 地址

首选:2620:0:ccc::2

备用:2620:0:ccd::2 :::

Hurricane Electric Public DNS (HE)

::: tip HE Public DNS IPv4 地址

首选:74.82.42.42

备用:66.220.18.42

IPv6 地址

首选:2001:470:20::2

备用:2001:470:0:9d::2 :::

科摩多 Comodo SecureDNS

::: tip 科摩多公共 DNS 服务 IPv4 地址

首选:8.26.56.26

备用:8.20.247.20 :::

Verisign Public DNS

::: tip Verisign Public DNS IPv4 地址

首选:64.6.64.6

备用:64.6.65.6

IPv6 地址

首选:2620:74:1b::1:1

备用:2620:74:1c::2:2 :::

Neustar Recursive DNS

::: tip Neustar Recursive DNS

IPv4 地址

首选:156.154.70.1

备用:156.154.71.1

IPv6 地址

首选:2610:a1:1018::1

备用:2610:a1:1019::1 :::

ORACLE Dyn Public DNS

::: tip Dyn Public DNS

IPv4 地址

首选:216.146.36.36

备用:216.146.35.35 :::

Level3 Public DNS

::: tip Level3 Public DNS

IPv4 地址

首选:209.244.0.3

备用:209.244.0.4 :::

Alternate DNS

::: tip Alternate DNS

IPv4 地址

首选:23.253.163.53

备用:198.101.242.72 :::

----

香港宽频 / HKBN

::: tip 香港宽频 DNS

IPv4 地址

首选:203.80.96.10 :::

和记环球电讯 DNS

::: tip和记环球电讯 DNS

IPv4 地址

首选:202.45.84.58

备用:202.45.84.59 :::

Pacific SuperNet DNS

::: tip Pacific SuperNet DNS

IPv4 地址

首选:202.14.67.4

备用:202.14.67.14 :::

----

中华电信 / HiNet

::: tip 中华电信公共 DNS

IPv4 地址

首选:168.95.1.1

备用:168.95.192.1

IPv6 地址

首选:2001:b000:168::1

备用:2001:b000:168::2 :::

数位联合电信 / Seednet

::: tip 数位联合电信 DNS

IPv4 地址

首选:139.175.252.16

备用:139.175.55.244 :::

台湾网路资讯 / TWNIC Quad101 Public DNS

::: tip 台湾网路资讯 TWNIC Quad101 Public DNS

首选:101.101.101.101

备用:101.102.103.104

IPv6 地址

首选:2001:de4::101

备用:2001:de4::102 :::

----

KT olleh

::: tip KT olleh DNS

IPv4 地址:

首选:168.126.63.1

备用:168.126.63.2 :::

SK Broadband

::: tip SK Broadband DNS

首选:210.220.163.82

备用:219.250.36.130 :::

LG U+

::: tip LG U+ DNS

两者二选一

首选:164.124.101.2

备用:203.248.252.2


首选:164.124.107.9

备用:203.248.242.2 :::

俄罗斯 Yandex Public DNS

::: tip 俄罗斯 Yandex Public DNS

IPv4 地址

首选:77.88.8.8

备用:77.88.8.1

IPv6 地址

首选:2a02:6b8::feed:0ff

备用:2a02:6b8:0:1::feed:0ff :::

俄罗斯 SafeDNS

::: tip 俄罗斯 SafeDNS

IPv4 地址

首选:195.46.39.39

备用:195.46.39.40 :::

德国 DNS.WATCH Public DNS

::: tip 德国 DNS.WATCH Public DNS

IPv4 地址

首选:84.200.69.80

备用:84.200.70.40

IPv6 地址

首选:

2001:1608:10:25::1c04:b12f

备用:

2001:1608:10:25::9249:d69b :::

瑞士 xiala.net Public DNS

::: tip 瑞士 xiala.net Public DNS

IPv4 地址

首选:77.109.148.136

备用:77.109.148.137

IPv6 地址

首选:2001:1620:2078:136::

备用:2001:1620:2078:137:: :::

丹麦 UncensoredDNS

::: tip 丹麦 UncensoredDNS

IPv4 地址

首选:91.239.100.100

备用:89.233.43.71

IPv6 地址

首选:2001:67c:28a4::

备用:2a01:3a0:53:53:: :::

荷兰 Freenom World Public DNS

::: tip 荷兰 Freenom World Public DNS

IPv4地址

首选:80.80.80.80

备用:80.80.81.81 :::

----

北京邮电大学 IPv6 DNS 服务器

::: tip IPv6 地址

首选:2001:da8:202:10::36

备用:2001:da8:202:10::37 :::

上海交通大学 IPv6 DNS 服务器

::: tip IPv6 地址

首选:

2001:da8:8000:1:202:120:2:100

备用:

2001:da8:8000:1:202:120:2:101 :::

清华大学 TUNA 协会 IPv6 DNS 服务器

::: tip IPv6 地址

首选:2001:da8::666 :::

北京科技大学 IPv6 DNS 服务器

::: tip IPv6 地址

首选:2001:da8:208:10::6 :::

科技网 IPv6 DNS 服务器

::: tip IPv6 地址

首选:2001:cc0:2fff:2::6 :::

雪人计划 Yeti DNS Project

::: tip IPv6 地址

首选:240C::6666

备用:240C::6644

备用:240C::4444 :::

CNNIC IPv6 DNS 服务器

::: tip IPv6 地址

首选:2001:dc7:1000::1 :::