从零开始学习网络安全渗透测试之基础入门篇——(二)Web架构前后端分离站Docker容器站OSS存储负载均衡CDN加速反向代理WAF防护

Web架构

Web架构是指构建和管理Web应用程序的方法和模式。随着技术的发展,Web架构也在不断演进。当前,最常用的Web架构包括以下几种:

  1. 单页面应用(SPA)
    • 特点:所有用户界面逻辑和数据处理都包含在一个HTML页面中,通过JavaScript动态加载内容。
    • 优势:良好的用户体验,快速的内容加载,可缓存静态文件。
    • 劣势:初始加载时间较长,对网络条件要求较高,搜索引擎优化(SEO)挑战。
  2. 前后端分离
    • 特点:将Web应用程序的前端(用户界面)和后端(服务器逻辑)分离,通常通过API进行通信。
    • 优势:前后端开发可以并行进行,提高开发效率;易于维护和扩展。
    • 劣势:增加了API设计和维护的复杂性。
  3. 微服务架构
    • 特点:将大型应用程序分解成多个小型、独立的服务,每个服务运行在自己的进程中,通过API进行通信。
    • 优势:可独立部署,易于扩展,能够使用不同的技术栈。
    • 劣势:增加了系统复杂性,需要更多的协调和管理。
  4. 服务器端渲染(SSR)
    • 特点:服务器端执行Web应用程序的逻辑和渲染,然后将完整的HTML页面发送给客户端。
    • 优势:良好的SEO性能,快速的页面加载,尤其是在首屏内容加载时。
    • 劣势:服务器负载较大,需要额外的服务器资源。
  5. 全栈开发
    • 特点:开发者负责整个Web应用程序的端到端开发,包括前端和后端。
    • 优势:开发效率高,对整个系统的理解更深入。
    • 劣势:需要开发者具备全面的技术栈知识。
  6. 无服务器架构(Serverless):
    • 特点:应用程序不需要管理服务器或操作系统,所有计算和存储需求都由云服务提供商管理。
    • 优势:易于扩展,无需担心服务器管理,成本效益高。
    • 劣势:对开发者而言,可能需要适应新的开发模式和思维方式。
      这些架构各有优势和劣势,适用于不同的项目需求和场景。选择哪种架构取决于项目的具体要求、团队的技能、以及期望的性能和成本。随着技术的进步,新的Web架构模式也在不断出现和被采纳。

一、前后端分离站

前后端分离是Web开发中的一种常见模式,它将Web应用程序分为两个独立的层:前端(用户界面)和后端(服务器逻辑)。这种分离模式允许前端和后端开发可以并行进行,提高了开发效率和维护性。以下是前后端分离应用的详细介绍:

前端开发

  1. 技术栈
    • HTML:用于构建网页的结构。
    • CSS:用于网页的布局和样式。
    • JavaScript:用于实现网页的交互和动态效果。
    • 框架和库:如React、Vue.js、Angular等,用于简化开发过程。
  2. 工作流程
    • 前端开发人员负责创建和维护HTML页面、CSS样式和JavaScript脚本。
    • 他们通常使用版本控制工具(如Git)来管理代码,并与后端开发人员协作。

后端开发

  1. 技术栈
    • 服务器端语言:如Node.js、Python(Django、Flask)、Java(Spring)、Ruby(Ruby on Rails)等。
    • 数据库:如MySQL、PostgreSQL、MongoDB等。
    • 框架和库:如Express.js、Django、Flask、Spring Boot等。
  2. 工作流程
    • 后端开发人员负责实现服务器逻辑、数据库交互和API设计。
    • 他们使用版本控制工具来管理代码,并与前端开发人员协作。
      在这里插入图片描述

通信方式

前后端分离应用通常通过API(Application Programming Interface)进行通信。前端向后端发送HTTP请求,后端处理请求并返回数据或响应。这种通信可以是同步的(如GET和POST请求),也可以是异步的(如WebSocket)。

优点

  • 开发效率:前端和后端开发可以并行进行,提高开发速度。
  • 维护性:由于前端和后端分离,它们可以独立部署和维护。
  • 可扩展性:前后端可以独立扩展,例如,可以增加更多的前端页面或后端服务。
  • 技术栈选择:前后端可以使用不同的技术栈,根据各自的需求和优势来选择。

缺点

  • API设计:需要设计良好的API,以保证前后端之间的通信顺畅。
  • 团队协作:需要前后端开发人员良好的沟通和协作,以确保整体项目的顺利进行。

实际应用

前后端分离模式广泛应用于各种Web应用,如电子商务网站、社交网络、在线办公工具等。它允许开发者根据项目的需求选择合适的技术栈,并且可以更容易地扩展和维护。

二、Docker容器站

微服务架构是一种将应用程序作为一组小型服务的方式进行构建,每个服务运行在自己的进程中,并且通过轻量级的通信机制(通常是HTTP RESTful API)进行协调和集成。每个服务都是围绕业务功能构建的,并且可以独立部署。容器化是实现微服务架构的一种流行方式,因为它提供了环境一致性、可移植性和易于部署等优点。
在这里插入图片描述

微服务架构的特点

  1. 服务自治:每个微服务都负责一个特定的功能,可以独立开发、测试、部署和扩展。
  2. 语言和框架独立:微服务可以使用不同的编程语言和框架,只要它们可以相互通信。
  3. 轻量级通信:微服务之间通过API进行通信,通常使用HTTP/REST或消息队列。
  4. 服务发现:每个服务都需要知道如何找到其他服务,服务发现机制可以帮助它们找到其他服务的地址。
  5. 容错和负载均衡:微服务架构需要考虑如何处理服务的失败和负载,因此需要实现容错和负载均衡机制。

容器化

容器化是将应用程序及其依赖打包在一起,形成一个可移植的容器镜像,可以在任何支持该镜像的环境中运行。容器化技术,如Docker,允许开发人员创建一个容器镜像,其中包含了应用程序、依赖、运行时环境等,确保应用程序在任何地方都能以相同的方式运行。

微服务容器网站的特点

  1. 可扩展性:通过容器化,可以轻松地水平扩展服务,以应对增加的负载。
  2. 环境一致性:容器化确保了开发、测试和生产环境的一致性,减少了环境差异带来的问题。
  3. 快速部署:容器镜像可以快速部署到生产环境中,并且可以自动化部署流程。
  4. 服务自治:每个微服务都是独立的,可以独立部署和扩展,不需要重新部署整个应用程序。
  5. 容错和负载均衡:容器化平台(如Kubernetes)提供了容错和负载均衡机制,确保服务的可用性和性能。

实际应用

微服务容器网站通常用于大型、复杂和需要快速迭代的项目。它们允许开发团队独立工作,同时保持整个系统的协调和一致性。这种架构模式非常适合需要频繁更新和扩展的Web应用程序,如电子商务网站、社交网络和在线协作工具。

三、OSS存储

网站对象存储服务(Object Storage Service,简称OSS)是一种提供海量、安全、低成本、高可靠的对象存储服务,适用于存放大规模非结构化数据。网站OSS存储通常用于存储静态资源文件,如图片、视频、音频等,以及备份数据、归档数据和日志数据等。
在这里插入图片描述

阿里云、腾讯云、华为云等国内主流云服务提供商都提供了自己的OSS存储服务。以下是一些常见的OSS存储服务特点:

  1. 海量存储:OSS提供PB级别的存储空间,可以满足大规模数据存储的需求。
  2. 高可靠性:OSS采用冗余存储,数据会自动备份到不同的存储设备,确保数据的安全性和可靠性。
  3. 高性能:OSS提供高吞吐量的读写能力,可以满足高性能数据访问的需求。
  4. 安全性:OSS支持多种安全特性,如访问控制列表(ACL)、数据加密、防盗链等,确保数据的安全性。
  5. 灵活性:OSS支持多种编程语言和开发工具,可以方便地集成到各种应用程序中。
  6. 低成本:OSS采用按量付费的模式,用户只需为实际使用的存储空间和数据流量付费,无需预付费。
    网站OSS存储的使用场景:
  7. 静态资源存储:将网站的静态资源文件(如图片、视频、音频等)存储在OSS上,可以提高网站的性能和可扩展性。
  8. 备份和归档:将重要数据和日志文件存储在OSS上,可以实现数据的长期保存和备份。
  9. 内容分发:利用OSS的高性能和全球节点,可以实现内容在全球范围内的快速分发。
  10. 日志分析:将网站日志数据存储在OSS上,可以方便地进行日志分析和数据挖掘。
  11. 开发和测试:开发和测试团队可以将开发环境中的数据和文件存储在OSS上,实现环境的一致性和共享。

四、负载均衡

网站负载均衡是一种网络技术,用于在多个服务器之间分配网络流量,以提高系统的可用性、可靠性和性能。当网站或应用程序的访问量增加时,负载均衡器可以帮助分散流量,确保每个服务器都能有效地处理请求,从而避免单一服务器过载。
在这里插入图片描述

负载均衡器的作用:

  1. 提高可用性:如果一个服务器出现故障,负载均衡器可以将流量转移到其他健康的服务器上,确保服务不中断。
  2. 增加可靠性:通过在多个服务器之间分配流量,即使某些服务器出现问题,也不会影响整个系统的运行。
  3. 提高性能:负载均衡器可以根据服务器的当前负载情况,智能地将请求分配到最合适的服务器,从而提高响应速度和吞吐量。
  4. 可扩展性:随着访问量的增加,可以轻松地添加更多服务器到负载均衡器中,以满足不断增长的需求。

负载均衡器的类型:

  1. 硬件负载均衡器:使用专门的硬件设备来处理流量分发。这些设备通常具有高性能和高级功能。
  2. 软件负载均衡器:运行在服务器或虚拟机上的软件,可以实现与硬件负载均衡器类似的功能。
  3. 云服务负载均衡器:云服务提供商(如阿里云、腾讯云、AWS等)提供的负载均衡服务,通常易于设置和管理。

负载均衡器的实现方式:

  1. 轮询(Round Robin):按照预设的顺序,将请求依次发送到每个服务器。
  2. 最少连接(Least Connections):将请求发送到当前连接数最少的服务器。
  3. IP哈希(IP Hash):根据客户端的IP地址来决定将请求发送到哪个服务器。
  4. 基于服务器性能的负载均衡:根据服务器的性能指标(如CPU使用率、内存使用率等)来决定请求的分配。
  5. 地理位置(GeoIP):根据客户端的地理位置,将请求发送到离客户端最近的服务器。

负载均衡器的配置:

  1. 创建负载均衡器:在云服务提供商的管理控制台中创建负载均衡器实例。
  2. 添加后端服务器:将需要负载均衡的服务器添加到负载均衡器中。
  3. 设置监听器:配置监听器的规则,如端口、协议、路径等。
  4. 配置健康检查:设置健康检查规则,以监控后端服务器的健康状况。
  5. 启用会话保持:如果需要保持用户的会话状态,可以启用会话保持功能。
  6. 配置安全策略:设置SSL/TLS加密、访问控制等安全策略。
    通过合理配置负载均衡器,可以确保网站或应用程序在各种流量条件下都能提供稳定的服务。随着技术的发展,负载均衡器的功能和性能也在不断优化和提升。

五、CDN加速

CDN(Content Delivery Network,内容分发网络)是一种分布式网络架构,用于加速网站内容的分发和访问。CDN通过在全球各地部署服务器节点,将网站的内容缓存到离用户最近的节点上,从而缩短用户访问网站内容的距离,减少数据传输时间,提高网站的加载速度和用户体验。
在这里插入图片描述

CDN的工作原理:

  1. 用户请求:用户通过浏览器访问网站时,会发送一个请求到网站的域名。
  2. DNS解析:用户的DNS服务器会将域名解析为对应的IP地址,通常是网站的CDN节点地址。
  3. 请求分发:用户的请求首先到达CDN节点,CDN节点会检查请求的资源是否已在本地缓存。
  4. 缓存命中:如果请求的资源已在CDN节点缓存,CDN节点直接响应用户请求,返回缓存内容。
  5. 缓存未命中:如果请求的资源未在CDN节点缓存,CDN节点会向源站(网站服务器)发送请求,获取资源。
  6. 缓存内容:CDN节点获取资源后,将其缓存起来,以便后续的请求可以直接从CDN节点获取。
  7. 返回内容:CDN节点将获取到的资源返回给用户,完成请求处理。

CDN的优势:

  1. 加速访问:通过在用户附近的CDN节点提供内容,减少数据传输距离,提高访问速度。
  2. 提高可靠性:CDN具有高可用性和高可靠性,即使源站出现故障,CDN节点也能提供内容。
  3. 节省带宽:CDN缓存的内容可以直接从CDN节点返回,减少源站的带宽消耗。
  4. 降低成本:通过使用CDN,可以减少源站的硬件和带宽成本。
  5. 全球覆盖:CDN在全球部署节点,可以覆盖更多用户,提供更好的全球访问体验。

CDN的实现方式:

  1. 自建CDN:企业可以自己搭建CDN网络,管理自己的节点和服务。
  2. 使用第三方CDN服务:企业可以选择使用阿里云CDN、腾讯云CDN、AWS CloudFront等第三方CDN服务。

CDN的配置:

  1. 选择CDN服务提供商:根据企业需求和预算选择合适的CDN服务提供商。
  2. 注册账号并创建CDN实例:在CDN服务提供商的管理控制台中注册账号,并创建CDN实例。
  3. 配置源站:将网站的域名和源站地址关联到CDN实例。
  4. 设置缓存策略:配置CDN节点的缓存策略,包括缓存时间、缓存规则等。
  5. 配置DNS解析:将网站的域名解析到CDN节点的IP地址。
    通过配置CDN,可以显著提高网站的访问速度和用户体验,是现代网站建设中不可或缺的一部分。随着技术的发展,CDN的功能和性能也在不断优化和提升。

六、反向代理

HTTP反向代理是一种网络服务,它接收客户端的请求,然后将这些请求转发到内部网络上的服务器,并将从服务器接收到的响应转发回客户端。反向代理隐藏了内部网络的细节,使得客户端无法直接访问内部网络的服务器。
在这里插入图片描述

反向代理的作用:

  1. 安全:反向代理可以阻止外部用户直接访问内部服务器,从而提高安全性。
  2. 性能:通过缓存静态内容,反向代理可以减少内部服务器的负载,提高响应速度。
  3. 负载均衡:反向代理可以自动将请求分配到多个服务器上,实现负载均衡。
  4. 控制访问:反向代理可以控制对内部服务器的访问,例如,通过IP地址过滤、SSL终止等。
  5. 内容分发:反向代理可以将内容分发到全球各地,提高全球用户的访问速度。

常见的反向代理软件:

  1. Nginx:一个开源的HTTP和反向代理服务器,广泛用于负载均衡和反向代理。
  2. Apache HTTP Server:一个流行的开源HTTP服务器,也支持反向代理功能。
  3. HAProxy:一个高性能的负载均衡器,可以作为反向代理使用。
  4. IIS:微软提供的Web服务器,支持反向代理功能。

反向代理的配置:

  1. 创建代理规则:在反向代理软件的配置文件中创建代理规则,指定请求转发到内部服务器的路径。
  2. 设置缓存策略:配置反向代理的缓存策略,包括缓存时间、缓存内容等。
  3. 配置负载均衡:如果需要实现负载均衡,可以配置反向代理的负载均衡策略,如轮询、最少连接等。
  4. 安全设置:设置反向代理的安全策略,例如,通过SSL终止来保护通信安全。
  5. 测试和调整:在生产环境中部署反向代理之前,进行充分的测试和调整,以确保其正常工作。
    通过配置反向代理,可以提高内部服务器的性能和安全性,并改善用户体验。随着技术的发展,反向代理的功能和性能也在不断优化和提升。

七、WAF防护

WAF(Web Application Firewall,Web应用防火墙)是一种网络安全系统,旨在保护Web应用程序免受攻击,如SQL注入、跨站脚本(XSS)、远程文件包含(RFI)、本地文件包含(LFI)、会话劫持、CSRF(跨站请求伪造)等。它工作在Web服务器的前端,监视、分析和过滤传入和传出的Web通信。
在这里插入图片描述

比如安全狗的Web应用安全产品包括新一代混合式WAF产品和防篡改系统,旨在为网站安全提供全面保障。在安全大数据领域,安全狗基于海量攻防数据,结合AI学习能力,构建多领域、多维度的安全态势感知平台,帮助用户有效预测风险、精准感知威胁、提升响应效率。此外,安全狗还提供包括等保2.0、渗透测试、红蓝对抗等全方位的高级安全服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386829.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

火山引擎VeDI数据技术分享:两个步骤,为Parquet降本提效

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 作者:王恩策、徐庆 火山引擎 LAS 团队 火山引擎数智平台 VeDI 是火山引擎推出的新一代企业数据智能平台,基于字节跳动数据平台多年的“数据…

[Javascript】前端面试基础3【每日学习并更新10】

Web开发中会话跟踪的方法有那些 cookiesessionurl重写隐藏inputip地址 JS基本数据类型 String:用于表示文本数据。Number:用于表示数值,包括整数和浮点数。BigInt:用于表示任意精度的整数。Boolean:用于表示逻辑值…

认证授权概述和SpringSecurity安全框架快速入门

1. 认证授权的概述 1.1 什么是认证 进入移动互联网时代,大家每天都在刷手机,常用的软件有微信、支付宝、头条、抖音等 以微信为例说明认证的相关基本概念。在初次使用微信前需要注册成为微信用户,然后输入账号和密码即可登录微信&#xff0c…

git 推送时出现错误 Locking support detected on remote “origin“

背景:代码托管是局域网搭建的gitlab 按照提示配置 lfs.locksverify true 还是没有用。 网上搜索了一番,其中有人提到可能时服务器磁盘满了,连到服务器上 df -h 查看, 发现根目录已经写满了: 使用命令行: d…

scipy.fft.fft函数与scipy.fft.rfft函数的异同

import numpy as np from scipy import signal import matplotlib.pyplot as plt思路:1)先利用fft计算得出其幅频值2)在利用rfft计算得出其幅频值,看1)和2)那个能还原出信号的原始幅值# 生成一个示例信号 n…

c#实际开发长到的知识

基础科普: 个人建议先把rotion的库导入进来再操作,具体需要导入的库有,helper库包含了modbus通讯封装好的模块,而mvvm则可以用来做设计mvvm模块,你可以使用里面封装好的实现方法,用起来特别简单更容易实现其中的操作,但是我担心那天被卡脖子了啊啊啊,要是我罗工把库下…

【CTFHub】文件上传漏洞详解!

Webshell: 又称一句话木马。WebShell就是以网页文件形式存在的一种代码执行环境,主要用于网站管理、服务器管理、权限管理等操作。 WebShell根据不同的语言分为:ASP木马、PHP木马、JSP木马(上传解析类型取决于网站服务端编写语言类),该类木马…

(二)延时任务篇——通过redis的key监听,实现延迟任务实战

前言 本节内容是关于使用redis的过期key,通过开启其监听失效策略,模拟订单延迟任务的执行流程。其核心原理是通过使用redis订阅与发布的方式,将过期失效的key通过广播的方式,发布给客户端,客户端可以监听此消息进而消…

LNMP动态网站环境部署

1、LINUX部署 stop firewallddisable selinux 2、Nginx部署 ​ vim /etc/yum.repos.d/nginx.repo [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck1 enabled1 gpgkeyhttps://nginx.org/keys/nginx_signing.…

【前端 · 面试 】JavaScript 之你不一定会的基础题(一)

最近我在做前端面试题总结系列,感兴趣的朋友可以添加关注,欢迎指正、交流。 争取每个知识点能够多总结一些,至少要做到在面试时,针对每个知识点都可以侃起来,不至于哑火。 JavaScript 之你不一定会的基础题 前言 面试往…

Windows蓝屏问题解决(电脑只要安装了VPN_SV独立客户端)必蓝屏

一、SERNEL_SECURITY_CHECK_FAILURE (139) 蓝屏分析 官方介绍蓝屏现象,官方Windows为了保护电脑,出现故障,自动蓝屏,避免损坏电脑的一种现象,别名buckcheck、蓝屏。 100%复现软件:天融信VPN,同事…

为了方便写CURD代码,我在UTools写了个插件SqlConvert来生成代码!

-1. 前言 为了方便摸鱼,我之前写过一个通过sql生成代码的工具,但是服务器到期了,也就懒得重新部署了。 技术框架是 SpringBoot MybatisPlus Velocity Vue ElementUI Sql-ParseeSql-Parser-ui 0. Utools应用安装 官网地址: https://u.too…

【HZHY-AI300G智能盒试用连载体验】使用YOLOv8进行车辆流量监测

目录 YOLOv8的RKNN模型 程序的部署 流量统计 本文首发于电子发烧友论坛:【新提醒】【HZHY-AI300G智能盒试用连载体验】 智能工业互联网网关 - 北京合众恒跃科技有限公司 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com) 环境准备好之后,接…

福建聚鼎:现在装饰画好做吗

在当今社会,随着人们审美情趣的提升和生活品质的改善,家居装饰画已经成为了一种流行的墙面装饰方式。许多人都在思考,现在做装饰画是否是一个好时机? “逆水行舟,不进则退。”在日新月异的市场中,装饰画行业的竞争愈发…

商用密码测评之对HTTPS(TLS)协议中各个参数解释

1、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 是一个广泛使用的TLS(传输层安全协议)加密套件,它结合了多种技术和算法来确保网络通信的安全。下面是对该加密套件中各个参数的详细解释: 1. TLS 定义:TLS(传…

JMeter 使用

1.JMeter 是什么? JMeter 是一款广泛使用的开源性能测试工具,由 Apache 软件基金会维护。它主要用于测试 Web 应用程序的负载能力和性能,但也支持其他类型的测试,如数据库、FTP、JMS、LDAP、SOAP web services 等。 2.特点&#x…

Infuse Pro for Mac全能视频播放器

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 三、运行测试安装完成!!! 效果 一、下载软件 下载软件…

Qt系统机制

Qt系统 Qt文件概述输入输出设备类QFileQFileInfoQt多线程Qt多线程常用API使用Qt多线程 线程安全互斥锁读写锁条件变量信号量 Qt网络QUdpSocketQNetworkDatagram设计一个UDP回显服务器QTcpServerQTcpSocketTcp版本的回显服务器HttpClient核心API Qt 音频Qt视频 Qt文件概述 ⽂件操…

【C++BFS】1020. 飞地的数量

本文涉及知识点 CBFS算法 LeetCode1020. 飞地的数量 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 gr…

【C++初阶】string类

【C初阶】string类 🥕个人主页:开敲🍉 🔥所属专栏:C🥭 🌼文章目录🌼 1. 为什么学习string类? 1.1 C语言中的字符串 1.2 实际中 2. 标准库中的string类 2.1 string类 2.…