开发者的Web安全戒律:真实威胁与防御实践
上QQ阅读APP看书,第一时间看更新

3.3 渲染前后:浏览器执行的所有其他操作

浏览器不仅仅是渲染管道和JavaScript引擎。除了呈现HTML和执行JavaScript之外,现代浏览器还包含许多其他职责的逻辑。浏览器与操作系统连接以解析和缓存DNS地址、解释和验证安全证书、在需要时使用HTTPS编码请求以及根据Web服务器的指令存储和传输cookie。为了理解这些责任是如何结合在一起的,让我们在“幕后”看一下登录到亚马逊网站的用户:

1)用户使用他们喜欢的浏览器访问www.amazon.com

2)浏览器尝试将域(amazon.com)解析为IP地址。首先,浏览器查询操作系统的DNS缓存。如果找不到任何结果,它将请求互联网服务提供商查看他们的DNS缓存。如果ISP上没有人曾访问过亚马逊的网站(不过这种情况不太可能发生),ISP将在权威DNS服务器上解析该域名。

3)既然已经解析了IP地址,浏览器就会尝试与IP地址对应的服务器发起TCP握手,以便建立安全连接。

4)一旦建立了TCP会话,浏览器就会构造一个HTTP GET请求发送给www.amazon.com。TCP将HTTP请求拆分为数据包,然后将其发送到服务器进行重组。

5)此时,HTTP会话将升级到HTTPS以确保安全通信。浏览器和服务器进行TLS握手,约定加密密码,并交换加密密钥。

6)服务器使用安全通道发送回包含亚马逊网站首页HTML的HTTP响应。浏览器解析并显示页面,通常会触发许多其他HTTP GET请求。

7)用户导航到登录页面,输入他们的登录凭据,并提交登录表单,该表单将生成一个POST请求到服务器。

8)服务器通过在响应中返回Set-Cookie标头来验证登录凭据并建立会话。浏览器在规定的时间内存储cookie,并将其与后续请求一起发送回亚马逊网站。

完成所有这些操作后,用户就可以访问其亚马逊网站的账户了。