软件安全技术
上QQ阅读APP看书,第一时间看更新

4.1 Web基础

本节首先介绍Web的基本架构,然后对从输入网址到显示网页的全过程进行分析,为Web安全漏洞的分析打下基础。

4.1.1 Web基本架构

Web服务是指基于B/S架构、通过HTTP等协议所提供服务的统称,Web应用是使用各种Web技术来实现的具体的功能,两者之间是抽象与具体的关系,Web服务和Web应用程序共同构成了Web架构。

目前普遍使用的Web三层架构如图4-1所示,包含用户视图层、业务逻辑层和数据访问层。

图4-1 Web三层通用架构

在用户视图层,常见的浏览器程序有IE(Internet Explorer)、Firefox、Chrome、Safari、Opera,以及360浏览器、QQ浏览器和搜狗浏览器等。

在业务逻辑层,常见的Web开发语言有ASP(Active Server Pages)、PHP和JSP(Java Server Pages)。这三种开发语言都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。但JSP代码被编译成Servlet并由Java虚拟机解释执行,这种编译操作仅在对JSP页面的第一次请求时发生。在ASP、PHP和JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑。普通的HTML页面只依赖于Web服务器,而ASP、PHP和JSP页面需要附加语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器。ASP、PHP和JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持。

在数据访问层,关系型数据库依然是Web开发中的主流数据库,常见的有SQL Server、MySQL、Oracle和DB2。目前,非关系型数据库正在蓬勃发展中,如MongoDB、Redis和BigTable等非关系型数据库已经在很多领域得到广泛应用。

从图4-1可以看出,用户使用Web浏览器,通过接入网络或因特网连接到Web服务器上。用户通过HTTP协议发出请求,服务器根据请求的URL链接,找到对应的页面发送给用户。用户通过页面上的“超链接”可以在网站页面之间跳跃浏览,这就是静态的网页。后来由于这种页面只能单向地发布信息或向用户展示信息,无法实现与用户之间的交互性,由此产生了动态页面的概念。除此之外,还增加了Cookie和Session来存储用户的一些参数、状态和属性信息等,方便了用户的登录和服务器的管理。动态网页技术的使用让Web服务模式具有了交互性能力,Web架构的适用面和Web服务器的处理能力得到了很大扩展。

由于动态网站中的很多内容需要经常更新,如新闻、博客文章和图片等,而这些变动的数据并不适合放在静态的程序中,因此Web开发者在Web服务器后边增加了一个数据库服务器,采用数据与程序分离方式,将这些经常变化的数据存入数据库中并可随时进行更新。当用户请求页面时,后端服务器程序根据用户要求生成相应的动态页面,其中涉及动态数据的地方,利用SQL语言,从数据库中读取最新的数据并生成动态更新的页面传送给用户。

4.1.2 一次Web访问过程分析

当在浏览器的地址栏中输入一个完整的URL,再按〈Enter〉键直至页面加载完成,整个过程发生了什么?

在这整个过程中,大致可以分为以下几个阶段:DNS域名解析、TCP连接、HTTP请求、处理请求返回HTTP响应、页面渲染和关闭连接。

请扫描下方二维码查看详细内容。

文档资料

从输入网址到显示网页的全过程分析

来源:本书整理

请扫描右侧二维码查看全文。

当客户端与Web服务器进行交互时,就存在Web请求,这种请求都基于统一的应用层协议(HTTP协议)交互数据。

请读者完成本章思考与实践第14题,应用Fiddler工具分析HTTP连接过程。

拓展阅读

读者要想了解更多Web应用基础知识和开发技术,可以阅读以下书籍资料。

[1]DavidGourley,Brian Totty,等.HTTP权威指南[M].陈涓,赵振平,译.北京:人民邮电出版社,2012.

[2]上野宣.图解HTTP[M].于均良,译.北京:人民邮电出版社,2014.

[3]竹下隆史,村山公保,荒井透,等.图解TCP/IP[M].5版,乌尼日其其格,译.北京:人民邮电出版社,2013.