作为一名网络安全工程师,尤其是WEB渗透测试工程师,必须掌握一些WEB相关的基础知识,下面重点从WEB服务架构、浏览器请求过程、服务器操作系统、WEB应用服务器、数据库系统、动态网站脚本语言、WEB前端框架等。
1.Web服务架构
Web服务主要分为C/S架构和B/S架构。下面做一下分别介绍。C/S架构指客户端/服务器架构,客户端是一个程序安装在电脑上,专门用于和服务端连接,跨平台能力差,跨平台则需要重新开发客户端,现在这种架构基本上被弃用了,除非有特殊场景要求。
B/S架构指浏览器/服务器架构,不需要安装客户端软件,通过浏览器访问服务器,业务扩展简单方便。
2. 浏览器请求过程
首先由客户端发起DNS域名解析,将访问的域名解析成IP地址。然后客户端向服务器发起TCP三次握手建立连接后(建立过程在此省略),发送HTTP请求。服务器收到请求后回复HTTP响应数据包。浏览器解析通过HTTP响应数据包传输过来的HTML代码,最后浏览器对页面进行渲染,这是浏览器请求的大致过程。
3. 服务器操作系统
操作系统是管理计算机硬件与软件的程序。操作系统主要包括windows和Linux两种操作系统,Windows是闭源的,Linux是开源的。Windows服务器操作系统主要包括Windows Server系列;Linux服务器操作系统主要包括Redhat、SUSE、Ubuntu、Centos、Rocky linux,其中国产操作系统也是基于Linux的,比如中科方德、银河麒麟、统信UOS、中标麒麟、麒麟信安、普华Linux、中兴新支点、红旗Linux、华为欧拉等。
4.Web应用服务器
Web应用服务器包括IIS、Apache、Tomcat、Nginx、WebLogic、JBoss等,下面简单介绍一下常见的Web应用服务器。IIS是微软提供的互联网服务,集成在Windows服务器操作系统中。Apache是全球用得最多的Web服务器,支持跨平台应用,源代码开放。Tomcat是一个免费开源的轻量级Web应用服务器。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。
是一个基于J2EE的开放源代码的应用服务器。
5.数据库系统
数据库就是按照数据结构来组织、存储和管理数据的仓库,下面简单介绍一下常见的数据库系统。Access是由微软发布的中小型关系型数据库管理系统。Sqlserver是由微软发布的大型关系型数据库管理系统。Mysql是一款开放源代码的关系型数据库管理系统,但是现在已经被Oracle收购,Mysql的创始人重新打造了一款开源的MariaDB数据库。Oracle是甲骨文公司的一款关系型数据库管理系统。Redis 是一个高性能的开源的分布式key-value数据库。Memcached是一套分布式的快取系统,与redis相似,。MongoDB是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统。SQLite是一款非常轻量级的关系数据库系统,主要应用在移动端。Neo4j是一个高性能的NOSQL图形数据库。
除此之外,还有一些国产数据库,包括达梦、人大金仓、南大通用、神舟通用、瀚高、优炫、华为Gauss DB、中兴GoldenDB、巨衫SequoiaDB等。
6. 动态脚本语言
常见的动态脚本语言有ASP、PHP、JSP和javaScript,除此之外,还有Go和python等。
7.WEB前端框架
常见的Web前端框架有Angular、React、Vue。
8.开源建站系统
常见开源建站系统有DedeCMS织梦、Discuz!、帝国CMS、WordPress等,这些开源的建站系统会存在一些漏洞。