【信息安全】Web 应用程序解析与框架讲解

Web 应用程序解析与框架讲解


2022-06-25_214601

前置

之前我们只是简述了一下 Web 应用程序的发展过程,携带了后端语言的改变,现在我们在分析,从静态网页到如今的动态网页,改变不仅仅是在后端语言的改变。

还有 Web 应用程序的其他技术改变,数据库、中间件等等…

Web 开发技术演变-技术发展过程

在此之前,欢迎关注波比网络 培训、环境、资料、考证
波比网络官网:https://www.blbilink.com
波比网络 官方公众号:blbinet
波比网络工作室 官方公众号:blbistudio

获取技术支持访问:https://www.blbi.cn/form/

技能大赛各赛项交流群:https://www.blbi.cn/threads/40/
更多正式赛题源文件访问:https://www.blbi.cn

NISP、CIPS、PTE证书可咨询各大群群主

访问静态网页的过程

我们来看看,通过浏览器 or URL 去访问一个静态网页,数据的传输与响应是什么过程?

我们可以看到,当客户端 Client (也就是我们) 去访问一个简单的静态网站时,由于其网站的搭建特性,仅仅是静态页面,并无数据库与其他后端语言的支撑。

所以我们会先发送一个 HTTP 请求报文,若服务器响应,则会返回一个 HTTP 响应报文,而响应报文中就会携带 HTML 代码以显示出网页的内容,那么 CSS 也从而渲染网页

访问静态网页的过程

我们来看看一个服务端的响应包

观察响应数据,其中带有 HTML 代码与 CSS 代码,后端语言为 ASP.NET,同时加载了 CSS 渲染网页

服务端响应数据包

真正访问一个静态网页的过程

服务端接收请求报文的处理过程并不简单

服务端中正真接收处理报文的是 Web 应用服务器 (我们称它为 Web 容器、Web 中间件),常见的 Web 应用服务器有;

  • Apache

  • IIS

  • Tomcat

  • Nginx

Web 应用服务器是专门用于提供 HTTP 服务,他会处理接收到的 HTTP 请求、最后构建 HTTP 响应

访问静态网页的正真流程

Apache

https://httpd.apache.org/ 由 Apache 软件基金会(也就是 Apache Software Foundation,简称为 ASF)开发

apache

Apache,一种开放源码的HTTP服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,==是最流行的Web服务器端软件之一。==它快速、可靠并且可通过简单的API扩展,Perl/Python等解释器可被编译到服务器中。

  • 开放源代码。

  • 跨平台应用,可运行windoows和大多数linux系统。

  • 支持perl,php,python和java等多种网页编辑语言。

  • 采用模块化设计。

  • 运行非常稳定。

  • 具有相较好的安全性。

  • 提供用户会话过程的跟踪

  • 拥有简单而强有力的基于文件的配置过程

  • 支持多种方式的HTTP认证

适用于中小型网站架构,后端语言:PHP

IIS

https://www.iis.net/ 由 Microsoft 微软开发

后端语言:asp、aspx,ASP.NET

IIS

Tomcat

https://tomcat.apache.org/ Tomcat 是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,支持后端语言为 JSP,Java

Tomat-2

Nginx

http://nginx.org/en/download.html

Nginx (engine x) 是一个高性能的 HTTP反向代理 web 服务器,同时也提供了IMAP/POP3/SMTP服务。

Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的 Rambler.ru 站点(俄文:Рамблер)开发的,公开版本 1.19.6 发布于2020 年 12 月 15 日。

nginx

后端语言:PHP

反向代理

https://zhuanlan.zhihu.com/p/491075761

  • 其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问

  • 我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端

  • 此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址

Web 中间件处理 HTTP 请求过程

我们以 Apache 为例讲解,Apache 是怎么处理一个 HTTP 请求的过程

apache 处理 HTTP 请求过程参考

动态的网页组成与访问过程

后端语言以 PHP 为例

动态网页的访问过程

那么我们在日常上网的过程中会发现,比如虎牙,斗鱼等直播类网站,腾讯,优酷,bilibili 等视频网站,他们要加载的数据是非常庞大的,如果仅仅靠 Web 服务器来解析,会导致服务器的数据传输庞大且流量拥堵,甚至会导致 dos 拒绝服务

那么反过来说,这些庞大的视频或者资源也都不会存储在 Web 应用服务器中,而是一个新的服务器 —— 数据库服务器

数据库服务器解析

庞大的数据存储与访问不是 Web 中间件的强项,这些数据存储最终都被存储在数据库中,比如用户信息、新闻信息、图片信息、日志信息、视频相关信息等等

都是在数据库中存储的,我们常用的数据库有 SQL Server、Mysql、Oracle 等等

数据库可以安装在 Web 服务器上为一些小型网站服务,而大型网站则会单独放置一台数据库服务器,二者均在后端运行,提供数据访问,加快数据传输的过程

那么 Web 服务器 or Web 中间件是如何与数据库相互关联的?

是通过后端语言(PHP,python、java、asp、aspx 等) 来与数据库相关联,起到一个动态查询的过程。

Web 应用服务器与数据库向关联

完整的动态网站请求过程与安全分析

完整的动态网站请求过程

通过上面的一些列介绍,我们可想而知,一个 Web 应用程序或者说一个网站,并不是我们所理解的那么简单,他其实是由多个要素组成的一个系统

Web 应用服务器(Apache、Nginx…) + 动态脚本呢引擎(后端服务端语言 PHP …) + 数据库

以上是构成一个强大且动态的 Web 应用必不可少的要求

完整的动态网站请求过程

Web 应用安全问题分析

我们现在都知道了,一个完整的 Web 应用由 中间件+数据库+后端语言组成

那么其组成的一个过程,都是人来开发的

  • 人犯错是必不可少的,编写 Web 应用程序源代码的开发者可能会设计出一些不安全的代码漏洞 (SQL XSS CSRF 文件上传…)

  • Web 中间件的也会出现安全漏洞 (Tomcat CVE-2017-12615 PUT 上传漏洞、Nginx CVE-2013-4547 文件名逻辑漏洞 …)

  • 数据库也会随着 Web 应用程序被入侵从而出现安全漏洞 ( Redis 未授权访问)

  • 浏览器也会出现安全漏洞 ( Google 浏览器经常会爆出一些 RCE 蓝屏漏洞等 )

分析 Web 应用安全问题

常见的 Web 服务端架构

以下是一些 Web 服务端常见的架构

Web 常见服务端架构分析

学运维的好兄弟们都经理过这些,会去一步一步的搭建,但是咋们安全不是搞服务搞运维,所以咋们用一键搭建工具即可,环境的搭建不必较真

我们需要的是快速部署漏洞环境,复现漏洞、理解漏洞原理与成因

以上存在简称:WAMP LAMP WNMP LNMP

  • windows Apache Mysql PHP
  • windows Nginx Mysql PHP
  • Linux Apache Mysql php
  • Linux Nginx Mysql php

Web 应用程序环境搭建

我们这里推荐大家使用 phpstudy 搭建一个简单而不失优雅的 Web 应用,未来我们会使用他构建一个又一个拥有缺陷,拥有特定漏洞的 Web 漏洞实验室

案例一:搭建 Windows Server 2008 虚拟机

案例二:使用 PHPstudy 搭建 Web 应用

案例三:Linux 下 LNMP 搭建 Web 应用

案例四:常见服务器 Web 应用 BT 宝塔一键搭建-DNS 解析

hp

Web 应用程序环境搭建

我们这里推荐大家使用 phpstudy 搭建一个简单而不失优雅的 Web 应用,未来我们会使用他构建一个又一个拥有缺陷,拥有特定漏洞的 Web 漏洞实验室

案例一:搭建 Windows Server 2008 虚拟机

案例二:使用 PHPstudy 搭建 Web 应用

案例三:Linux 下 LNMP 搭建 Web 应用

案例四:常见服务器 Web 应用 BT 宝塔一键搭建-DNS 解析

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值