003-基础

WEB应用

WEB应用环境架构可分为两种主要类型:

  • 单层架构(Single-Tier Architecture):所有的组件都运行在同一个主机上,比如在个人计算机上运行的简单网站。

  • 多层架构(Multi-Tier Architecture):将不同的组件分别部署在不同的主机上,通过网络进行通信和协作,通常包括以下三层

a. 表现层(Presentation Layer):也称为客户端层,主要负责用户界面的展示和数据输入输出的交互,常见的表现层组件包括HTML、CSS、JavaScript等。

b. 业务逻辑层(Business Logic Layer):也称为应用层,主要负责处理业务逻辑和数据处理等操作,常见的业务逻辑层组件包括Java Servlet、ASP.NET、PHP等。

c. 数据层(Data Layer):也称为存储层,主要负责数据的存储和管理,包括关系型数据库(如MySQL、Oracle等)和非关系型数据库(如MongoDB、Redis等)等。

搭建一个WEB服务

  • 首先需要服务器、证书、域名、DNS解析
  • 架构搭建:
  1. 操作系统选择 :Windows、 linux

  2. 开发语言选择 :ASP/ASPX(参考asp和aspx的区别:https://www.cnblogs.com/Belling/archive/2012/10/25/2739129.html)、 PHP、 Java、 Python 、JavaScript …

  3. 源码 :CMS(CMS是英语Content Management System的缩写,按英语的字面翻译就是内容管理系统,顾名思义,它主要是为了方便发布网络内容而存在的一体化Web管理系统)、框架

  4. 中间件 :IIS(IIS的全称是Internet Information Services(互联网信息服务),是微软提供的运行在Windows系统下的中间件,主要用来解析.ASP,.ASA,.CER三种文件格式的文件。)、Apache、Nginx、Tomcat、weblogic、Jboos …

  5. 数据库类型 : Mysql、MSSQL 、Oracle 、Redis、MongoDB

  6. 第三方软件: Openssh、PHPMyAdmin

Web应用的通讯过程可以分为以下步骤:

  1. 用户发起请求:用户使用Web浏览器输入URL或点击链接,向Web服务器发起请求。

  2. DNS解析:Web浏览器将URL中的域名发送给DNS服务器进行解析,获取相应的IP地址。

  3. TCP连接:Web浏览器使用HTTP协议与Web服务器建立TCP连接,确保数据的可靠传输。

  4. 发送HTTP请求:Web浏览器向Web服务器发送HTTP请求,请求特定的资源(如HTML、CSS、JavaScript文件等)。

  5. 服务器处理请求:Web服务器接收到请求后,会进行相应的处理,如查询数据库、执行程序等。

  6. 发送HTTP响应:Web服务器将处理后的资源以HTTP响应的形式返回给Web浏览器。

  7. 浏览器渲染页面:Web浏览器接收到HTTP响应后,根据HTML、CSS和JavaScript等资源进行页面渲染。

  8. 断开TCP连接:Web浏览器和Web服务器之间的TCP连接被断开,请求-响应过程结束。

WEB框架

简介
web框架是用来进行Web应用开发的一个软件架构。大多数的web框架提供了一套开发和部署网站的方式。为web行为提供了一套支持的方法。使用web框架,很多业务逻辑外的功能不需要自己再取完善,而使用框架已有的功能就可以。

主要用于动态网络开发。以PHP为例、PHP可以在apache服务器上进行web开发,而不必使用框架。使用PHP进行开发的时候,在不使用框架的情况下,数据库连接就需要自己来实现,页面的生成和显示也是一样。比如框架的话可以完全避免sql注入的工作,而PHP在不用框架的情况下,这部分要自己做。

目前python主流的框架有Django和FLask;Java目前主流的开发框架是ssm。

web系统相关概念

网页、网站

我们可以通过浏览器上网看到精美页面,一般都是经过浏览器渲染过的html页面,其中包含css等前端技术。多个网页的集合就是网站

Web容器

Web容器,也叫web服务器,主要提供web服务,也就是常说的http服务。常见的Web容器有Apache/IIS/Nginnx
注意,Nginnx除了作为Web容器外,还经常用于反向代理以及负载均衡,Nginnx性能高

静态网页

静态网页都是一些.html文件,都是纯文本文件。这些文件包含HTML代码。HTML在浏览器中解释运行

中间件服务器

以上这种,只能单向地给用户展示信息,随着web的发展,信息要双向流动,产生了交互(进行对话)的需求,也就是动态网页的概念;所谓动态就是利用flash、php、asp、java等技术在网页种嵌入一些可运行的脚本,用户浏览器在解释页面时,遇到脚本就启动运行它。

脚本的使用让web服务模式有了“双向交流”的能力,web服务模式也可以像传统软件一样进行各种事务处理,如编辑文件、利息计算、提交表单等,web架构的适用面大大扩展。

这些脚本可以嵌入在页面中,如JS等。也可以以文件的形式单独存放在web服务器的目录里,如.asp、.php、.jsp文件等。这样功能性的脚本越来越多,形成常用的工具包,单独管理,web业务开发时,直接使用就可以了,这就是中间件服务器。

传统意义上的中间件是指flash、php、asp、java等,随着互联网发展,逐渐模糊的中间件的概念,也逐渐模糊了web容器的概念,另外,中间件除了flash、php、asp、java等,常见的还有Weblogic(原是java的中间件,既能当Web容器,又能当中间件,还能做负载均衡),还有Jboss(也是java的中间件,既能当Web容器,又能当中间件)

apache调用php时有两种方法,一种是模块调用,一种是cgi调用。

数据库的出现

静态网页与脚本都是事前设计好的,一般不经常改动,但网站上很多内容需要经常更新,如新闻、博客文章、互动游戏等,这些变动的数据放在静态网页的程序中显然不适合,传统的方法是数据与程序分离,采用专业的数据库。web开发者在web服务器后边增加了一个数据库服务器,这些经常变化的数据存进数据库,可以随时更新。当用户请求页面时,脚本根据用户请求的页面,涉及到动态数据的地方,利用SQL数据库语言,从数据中读取最新的数据,生成“完整”页面,最后发送给用户。

浏览器访问网站时,数据包流向

当浏览器访问一个网站时,数据包流量是如何流向的?

(1)首先进行域名解析获得网站的IP地址

在进行域名解析时

  • 首先查看本地缓存;
  • 若没有,再查看host文件;
  • 再没有,则再找DNS服务器,而DNS服务器是自动获取IP地址时,DHCP服务器发送给主机的或者网络配置时手动配置的

(2)获得网站的IP地址后,以自己的地址为源IP地址,网站的IP地址为目标IP地址封装IP包;
(3)之后封装帧头帧尾,以自己的MAC地址为源MAC地址,若服务器与自己不在同一个局域网,则以网关的MAC地址为目标MAC地址,而目标MAC地址的获取通过ARP广播或ARP缓存获取。
(4)将数据帧发到网关后,网关进行ACL表的匹配,路由然后通过NAT将源IP的私网地址转换为公网IP地址,发送到公网上
(5)在公网经过层层路由后到达服务器
(6)访问80、443端口,
(7)经过3次握手之后与服务器建立连接
(8)给服务器发送http包
(9)服务器给浏览器发送http响应,响应时

如果浏览器访问的是.html文件,找到文件后直接发送过去
如果浏览器访问的是.php文件,将PHP进行解析,若PHP连接数据库,则查找数据库,将PHP运行结果发给浏览器。

WEB方面漏洞分类

  • SQL注入
  • 文件安全
  • RCE执行
  • XSS跨站(跨站脚本攻击)
  • CSRF/SSRF/CRLF(跨站请求伪造)
  • 反序列化
  • 逻辑越权
  • 未授权访问
  • XXE/XML(xml外部实体注入)
  • 弱口令安全等(分类漏洞产生层面)

漏洞分类总结:https://blog.csdn.net/weixin_44431280/article/details/122794090
参考文章web框架及web系统相关概念:https://blog.csdn.net/m0_64378913/article/details/124113450