Web安全:Web体系架构存在的安全问题和解决方案

news2024/11/17 9:47:37

「作者简介」:2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等12个知识域的一百多个知识点,持续更新。

这一章节我们需要了解web体系架构,掌握Web存在的安全问题和解决方案。

在这里插入图片描述

Web安全

  • 1、Web体系架构
  • 2、Web存在的安全问题
  • 3、Web安全解决方案
    • 3.1、Web应用防火墙
    • 3.2、网页防篡改系统

1、Web体系架构

Web(World Wide Web)是全球广域网,也叫万维网,是一个全球性的分布式图形信息系统。

  • Web 1.0(静态互联网):1994年开始,将互联网上的资源聚合起来,用大量静态的HTML网页表示出来。这一时期网络是内容提供者,用户通过浏览器搜索信息。代表产品是网易、新浪这种新闻、「门户网站」
  • Web 2.0(交互式互联网):2004年开始,将应用程序通过浏览器提供给用户使用,不需要下载安装就能构造内容,与其他用户和网站互动。这一时期网络是平台,用户提供内容,另一部分用户获取内容。由于平台属于企业,用户信息都存储在平台上,这种中心化的模式很不安全。代表产品是博客、微博这种「互动式网站」
  • Web 3.0(去中心化互联网):2010年开始,未来的趋势,用户在网络上拥有自己的数据并能在不同的网站上使用。代表产品是「区块链」、以太坊这种业内人士提出的概念。

「Web体系架构」由客户端、通信协议、服务端三个部分组成。

  1. 客户端:负责用户交互。向服务器发送请求,接收并显示服务器返回的响应并渲染界面。通常是浏览器或者应用程序。
  2. 网络协议:定义计算机之间的通讯规则,比如HTTP和HTTPS。
  3. 服务器:负责提供信息。接收并处理用户请求,返回响应信息。使用Apache、Tomcat等中间件提供Web服务。

「Web应用开发技术」分为表现层、业务层、持久层三层架构。

  1. 表现层(Presentation layer):负责展示界面与用户交互。主要包含HTML、CSS、JS等前端技术。
  2. 业务层(Business Logic Layer):核心层,负责处理业务逻辑和传递数据。主要包含Java、Python、Spring等编程语言和框架。
  3. 持久层(Database Layer):负责存储并执行增删改查等基本数据操作。主要包含MySQL、Redis等数据库技术。

2、Web存在的安全问题

Web的安全问题也就是我们常说的Web漏洞,常见的有SQL注入、文件上传、文件包含。

SQL注入漏洞详解
文件上传漏洞详解
文件包含漏洞详解

3、Web安全解决方案

Web应用的安全问题主要有两种防护技术:Web应用防火墙和网页防篡改。

3.1、Web应用防火墙

Web应用防火墙(Web Application Firewall,WAF)通过过滤HTTP请求,保护Web应用免受SQL注入、XSS这种攻击。

WAF部署在客户端和Web服务器之间,通过「反向代理」的方式,接管所有发送给Web服务器的HTTP/HTTPS请求。

客户端的请求发给WAF,WAF根据内置的规则库检查请求头、请求体里是否包含攻击特征,包含就拦截,不包含就把请求转发给Web服务器。
Web服务器处理后返回响应给WAF,WAF检查响应体里是否包含敏感信息或者被篡改,再由WAF返回给客户端。对于客户端而言,一直就是跟WAF通信,Web服务器是隐藏的。

WAF跟传统防火墙的部署位置和功能不同,传统防火墙部署在网络边界,WAF部署在防火墙后面。先由防火墙根据策略过滤掉一部分流量以后,WAF再检测剩下的流量。而且传统防火墙工作在网络层,它不检查也无法理解数据包里编程语言那些数据,只能做访问控制。WAF工作在应用层,解决SQL注入、XSS这种传统防火墙无法解决的Web安全漏洞,实际环境中往往搭配使用。

WAF的产品类型有硬件WAF、软件WAF、云WAF三种。

  1. 硬件WAF:厂商提供一台单独的服务器,部署在网络边界。
  2. 软件WAF:厂商提供一个软件安装包,部署在服务器上。
  3. 云WAF:用户通过网络访问和配置WAF,保护云上的Web应用。

3.2、网页防篡改系统

网页防篡改技术本质上是防止网站后台文件被篡改。先备份文件,然后通过防篡改技术监测,发现被改后恢复文件。

具体实现技术有三种:

  1. 客户端轮询技术:轮询读取每一个网页,与真实网页对比,判断完整性。这种方式只能在被篡改后恢复,时效性很差。
  2. 事件触发技术:操作文件底层驱动, 监测文件夹内的所有内容和底层文件的变更事件,通过纯文件安全拷贝方式恢复文件,拷贝过程是毫秒级,篡改相当于无效。
  3. 驱动拦截技术:通过内核模块hook系统的调用拦截篡改行为。是目前能力最强的方式。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python算法于强化学习库之rlax使用详解

概要 在强化学习领域,开发和测试各种算法需要使用高效的工具和库。rlax 是 Google 开发的一个专注于强化学习的库,旨在提供一组用于构建和测试强化学习算法的基础构件。rlax 基于 JAX,利用 JAX 的自动微分和加速计算功能,使得强化学习算法的实现更加高效和简洁。本文将详细…

植物大战僵尸杂交版2.0.88最新版安装包

游戏简介 游戏中独特的杂交植物更是为游戏增添了不少亮点。这些杂交植物不仅外观独特,而且拥有更强大的能力,能够帮助玩家更好地应对游戏中的挑战。玩家可以通过一定的条件和方式,解锁并培养这些杂交植物,从而不断提升自己的战斗…

SpringBoot:SpringBoot中使用Redisson实现分布式锁

一、前言 Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。 刚好项目中需要使用到分布式锁,记录一下Redisson是如何使用分布式…

SpringBoot+Vue幼儿园管理系统(前后端分离)

技术栈 JavaSpringBootMavenMyBatisMySQLVueElement-UI 系统角色 教师用户管理员 功能截图

C++ STL - 容器

C STL(标准模板库)中的容器是一组通用的、可复用的数据结构,用于存储和管理不同类型的数据。 目录 零. 简介: 一 . vector(动态数组) 二. list(双向链表) 三. deque&#xff08…

k8s Pods漂移时间配置

默认为300秒 apiVersion: apps/v1 kind: Deployment metadata:name: my-test spec:replicas: 1selector:matchLabels:app: my-apptemplate:metadata:labels:app: my-appspec:containers:- name: my-containerimage: nginx:latestports:- containerPort: 80tolerations:- key: &…

LabVIEW传感器虚拟综合实验系统

LabVIEW传感器虚拟综合实验系统 开发了一个基于LabVIEW的传感器虚拟综合实验系统,该系统集成了NIELVIS和CSY系列传感器实验平台,通过图形化编程语言进行数据处理和实验管理。系统允许用户进行多种传感器参数的测量和实验报告的自动生成,支持…

使用DLL还是通讯协议进行LabVIEW设备集成

在使用LabVIEW进行设备集成时,可以选择通过设备提供的DLL或直接使用通讯协议。选择方法取决于开发效率、性能、灵活性和维护成本等因素。本文将从这几个方面详细分析两种方法的优劣,帮助做出最佳决策。 分析角度 1. 开发效率: DLL&a…

全能大模型AIGC产品的使用体验、选择倾向与未来展望

随着人工智能技术的迅猛发展,AIGC(人工智能生成内容)领域正迎来前所未有的繁荣。其中,全能大模型产品以其强大的生成能力和广泛的应用场景,吸引了众多用户的关注。腾讯元宝APP的上线更是为这一领域注入了新的活力。本文…

Echarts柱状图数据太多,自定义长度之后,自适应浏览器缩放

不知道是不是最优解,但是当前解决了我遇到的问题,如有更好的方法,希望看到这篇文章的同学可以不吝指导一番,非常感谢 1、问题描述: 因Ecahrts柱状图数据有时多有时少,所以在数据达到一定程度之后&#xff…

spring mvc 中怎样定位到请求调用的controller

前言 在java web开发过程中,正常情况下controller都是我们自己写的,我们可以很方便的定位到controller的位置。但是有些时候我们引入的其他依赖中可能也有controller,为了找到并方便的调试jar包中的controller,我们一般会进行全局…

【CMake系列】10-cmake测试集成googletest与第三方库自动化构建

cmake测试,使用ctest 可能不能满足我们的需求,需要我们使用更为强大的第三方测试框架,如googletest,完成项目中的测试工作 本篇文章将第三方测试框架 googletest,引入,同时也可以作为 关于 第三方包 自动化…

Nginx编译安装,信号,升级nginx

编译安装nginx:前面博客有写编译安装过程 systemctl stop firewalld setenforce 0 mkdir /data cd /data wget http://nginx.org/download/nginx-1.18.0.tar.gz tar xf nginx-1.18.0.tar.gz cd nginx-1.18.0/ yum -y install make gcc pcre-devel openssl-devel …

0基础学习区块链技术——51%攻击和双花

在《0基础学习区块链技术——分叉》一文中,讲解了区块链分叉相关的原因。这种分叉是CAP原则的结果,大部分分布式系统都会优先保证Availability(可用性)和Partition Tolerance(分区容错性)。而对于Consisten…

【spring】第二篇 bean实例化

对象已经能交给Spring的IOC容器来创建了,但是容器是如何来创建对象的呢? 就需要研究下bean的实例化过程,在这块内容中主要解决两部分内容,分别是 bean是如何创建的 实例化bean的三种方式,构造方法,静态工厂和实例工厂 在讲解这…

[flutter]一键将YAPI生成的api.json文件转为需要的Dart Model类的脚本

目的: 根据YAPI接口平台生成的api.json接口文件,将接口数据转化为model类,生成对应的接口值类型文件。 发现: api.json文件导出: YAPi是一个接口管理平台,登录账号打开项目后,在点击数据管理…

DVWA-File Upload

Low 后端代码没有对上传的文件做任何过滤&#xff0c;所以可以上传一句话木马。 <?phpif( isset( $_POST[ Upload ] ) ) {// Where are we going to be writing to?$target_path DVWA_WEB_PAGE_TO_ROOT . "hackable/uploads/";$target_path . basename( $_F…

安装MongoDB单副本说明

参考&#xff1a;https://blog.csdn.net/weixin_43464076/article/details/126509254 https://driverzhang.github.io/post/mongo%E5%BC%80%E5%90%AF%E4%BA%8B%E5%8A%A1%E4%B9%8B%E5%89%AF%E6%9C%AC%E9%9B%86%E9%87%87%E5%9D%91/ https://dev.to/alexalvess/getting-started-wi…

【CMake系列】05-静态库与动态库编译

在各种项目类型中&#xff0c;可能我们的项目就是一个 库 项目&#xff0c;向其他人提供 我们开发好的 库 (windows下的 dll /lib &#xff1b; linux下的 .a / .so)&#xff1b;有时候在一个项目中&#xff0c;我们对部分功能 打包成 库&#xff0c;方便在不同地方进行调用 静…

[Linux] 软链接使用绝对路径的重要性

文章目录 软链接使用绝对路径的重要性软链接路径复制软链接查看文件类型 软链接使用绝对路径的重要性 软链接路径 软链接必须指定绝对路径&#xff0c;否则复制软链接后&#xff0c;由于软链接的相对路径是从软链接所处位置开始解析的&#xff0c;因此使用相对路径的软链接可…