- CTF实战:从入门到提升
- 苗春雨 叶雷鹏主编
- 1622字
- 2023-08-28 20:16:18
1.1 Web应用体系结构
近年来,随着互联网的不断发展,Web应用在互联网中所扮演的角色也越来越重要。那么什么是Web应用?它的具体工作流程又是什么样的?其中的术语又该怎样去理解?本章将会一一介绍。
1.1.1 Web应用工作流程
对于一个常见的Web应用来说,通常由数据库、后端和前端组成。
当用户在前端单击一个按钮之后,一个Web应用工作处理流程通常如下。
• 后端接收到用户发来的请求,判断用户意图。
• 后端依据用户系统到数据库中更新数据并拉取数据。
• 数据库更新与拉取数据之后,交还给后端。
• 后端进行处理之后,展示给前端。
以上即为一个常见的Web应用工作流程。
1.1.2 Web应用体系结构内的术语
在Web安全中会遇到很多名词,在此选取较为常见的做出解释。
(1)Apache
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器软件,可以在大多数计算机操作系统中运行。其由于跨平台和安全性而被广泛使用,是目前最流行的Web服务器软件之一。它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
(2)Nginx
Nginx(发音同“engine X”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。Nginx是免费的开源软件,根据类BSD许可证的条款发布。一大部分Web服务器使用Nginx,通常作为负载均衡器。
(3)Tomcat
Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全局管理和Tomcat阀等。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。但是,不能将Tomcat和Apache HTTP服务器混淆,Apache HTTP服务器是用C语言实现的HTTP Web服务器;这两个HTTP Web Server不是捆绑在一起的。Apache Tomcat包含了配置管理工具,也可以通过编辑XML格式的配置文件来进行配置。
(4)中间件
中间件(Middleware),又称中介层,是一类提供系统软件和应用软件之间连接、便于软件各部件之间沟通的软件,应用软件可以借助中间件在不同的技术架构之间共享信息与资源。中间件位于客户端/服务器的操作系统之上,管理着计算资源和网络通信。中间件在现代信息技术应用框架(如Web服务、面向服务的体系结构等)中应用比较广泛,如Apache的Tomcat、IBM公司的WebSphere、BEA公司的WebLogic应用服务器等都属于中间件。
(5)MySQL
MySQL是一种关系型数据库管理系统(Relational Database Management System, RDBMS),由瑞典MySQL AB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在Web应用方面,MySQL是最好的关系型数据库管理系统应用软件之一。关系型数据库将数据保存在不同的表中,而不是将所有数据放在一个“大仓库”内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的较常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
(6)PostgreSQL
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES 4.2版本为基础的对象关系型数据库管理系统。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以使用很多方法扩展,如增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活性,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。
(7)PHP
PHP (PHP: Hypertext Preprocessor),即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发,并可嵌入HTML中。PHP语法学习了C语言,吸纳了Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的特色持续改进提升自己。例如,Java的面向对象编程,该语言当初创建的主要目标是让开发人员快速编写出优质的Web网站。PHP同时支持面向对象和面向过程的开发,使用上非常灵活。
(8)Python
Python是一种广泛使用的解释型、高级和通用的编程语言。Python支持多种编程范型,包括函数式、指令式、结构化、面向对象和反射式编程。它拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且其本身拥有一个巨大而广泛的标准库。