用户在访问网站过程中,请求可能会被中间人劫持。按照劫持的方式,劫持可分为两类:一类是在域名解析层面进行劫持,一类是通过http 302跳转方式进行劫持。
无论是域名解析层面的劫持,还是应用层http 302层面的劫持,其本质都是服务端的伪装。可以通过在用户与CDN节点之间,CDN节点内部,CDN节点至客户源站之间采用全链路认证+加密通信机制,确保用户请求不被劫持。这就要求客户端必须严格校验服务器端身份,服务端需出示权威机构颁发的证书,并证明具备对客户端加密内容进行解密的能力,才能通过认证。客户端和服务端之间的校验机制,最常用的就是全链路https协议方式。
以下为全链路https原理图:
针对域名解析层面的劫持,还可以采用HTTPDNS的方式。该方式下,通常由客户端app提前发起https协议的待访问域名解析请求,获取目的节点IP后向目标IP发起正式url的https请求,从而避免域名劫持,常用于移动端APP的访问。