Web基本架构与Web攻击介绍(SQL注入、XSS、CSRF)

news2024/11/23 4:16:38

目录

Web基础

Web服务器介绍

Web攻击

SQL注入攻击——针对网站数据库的攻击

XSS跨站脚本攻击——针对用户浏览器的攻击

CSRF跨站请求伪造攻击——针对用户浏览器的攻击

三种攻击方式的区别


Web基础

什么是Web

Web指的是万维网(World Wide Web),也就是常说的www。是一个由许多互相链接的超文本系统组成的,通过互联网访问

我们平时通过浏览器上网都是Web

Web的组成

Web主要是由客户端、服务端(脚本引擎就运行在服务器上)、数据库三部分组成

其中客户端(浏览器)称为前端,服务器和数据库称为后端

Web的发展史

Web1.0   万维网初期阶段,使用大量的静态界面供用户阅读,用户进行无法添加修改(例如 个人网站)

Web2.0   可以在网页上添加、修改内容(例如 博客书写,进行人与人之间的交互)

Web1.0存在的安全隐患

以SQL注入、上传漏洞为主,主要危害Web服务器

Web2.0存在的安全隐患

Web2.0出现了越来越多的安全隐患,常见的有XSS、CSRF、数据劫持等

逐渐针对Web上网用户进行攻击


Web服务器介绍

Web服务端的发展

Web服务端其实也是跟着Web而发展的

Web的静态页面时期

服务器通过HTML等后缀文件组成静态页面来供客户端访问

Web的动态页面时期1

服务器提供动态页面,而动态页面是由脚本驱动的(PHP脚本文件),由于客户端无法识别php、js等脚本文件

因此需要将PHP脚本文件经过服务器端的语言解释器,将其解析为HTML文件,发送到Web客户端进而显示出来(浏览器看到的该文件后缀为PHP,而不是HTML)

Web的动态页面时期2

当网页的浏览量非常庞大的时候,这个时候急需要数据库服务来提供Web服务端的数据支持

当我们进行页面操作的时候,PHP脚本文件经过服务器端的语言解释器,解析执行向数据库调取/写入数据,然后数据库返回相应的数据

这些数据在通过语言解析器的时候,再组装成HTML文件,然后发给浏览器

语言解释器一般和Web服务器运行在同一服务器上,两者利用配置文件进行连接

脚本也是通过配置文件连接到数据库服务的,以此来执行相关的数据库操作

然后Web服务器、语言解释器、数据库服务构成了现在的Web服务端/后端架构

Web工作流程

从客户端(浏览器)角度来看的工作原理

也就是HTTP/HTTPS的通信过程

HTTP、HTTPS、SSL协议以及相关报文讲解-CSDN博客

目前流行的Web后端架构有哪些

这些架构并不是固定的,也可以进行很灵活的组合

如何搭建一个Windows+Apache+PHP+MySQL的简易的Web服务端环境

通过下载一个集成软件phpStudy来实现简易的Web服务器环境的搭建,安装该软件后 会自动安装apache、mysql服务(Mysql的用户名和密码都是root)

安装完成后,网页的 /.php文件在哪里?

软件安装目录下的WWW目录中就存放着/.php文件

默认网页打开显示的内容就是该文件内容

创建自己的网页

我们可以写自己的网页HTML/PHP文件,将其放到该目录下(WWW目录下),之后访问该网站指定目录是就会弹出此网页

例如:我们在www目录下创建一个123.html文件时,我们访问127.0.0.1/123.html这个网页,就会显示123.html的内容


Web攻击

Top10应用安全风险

SQL注入攻击——针对网站数据库的攻击

为什么会出现SQL注入

我们先了解url组成:https://kaifa.baidu.com/searchPage?wd=cdn&hmsr=aladdin其中?之后也就是紫色部分就是我们用户可以输入的变量的数据,通过该变量可以直接从数据库取得不同的数据

SQL注入如何实现

SQL注入就是程序员在编写代码(存储在服务器端的脚本)的时候,没有对用户输入数据的合法性进行判断,使得应用程序存在安全隐患

黑客通过在输入数据时插入一段数据库查询代码,当该url到达服务器时,服务器就去调用数据库执行该查询语句,然后将得到的结果返回给黑客,这样黑客就可以得到想知道的某些数据或进行数据库操作

即:就是通过post/get等方式请求 web表单、输入域名或页面请求的查询字符串中插入SQL语句,改变了原始查询的意义,最终使得web服务器执行恶意命令的过程

SQL的危害

数据库信息收集

对数据库进行增删改操作

借助数据库的某些功能控制操作系统(例如SQL Server的内置存储过程XP_CMDShell)

SQL的防御

对于用户的输入数据(提交的url请求中的参数部分)、用户从cookie中得到的数据(不会返回重要数据)、从其他系统传入的数据进行限制(即:任何和用户有接触的输入点,就需要对用户的输入做一定的过滤)

部署防SQL注入系统或脚本

具体的限制方法:

白名单:限制传递数据的格式

黑名单:过滤特殊字符串(update、delete等)、过滤特殊字符

XSS跨站脚本攻击——针对用户浏览器的攻击

XSS原理

攻击者向有XSS漏洞(程序员没有对用户提交的数据进行过滤)的网站中输入恶意的HTML代码,当其它用户浏览该网站时,该HTML代码就会自动执行,从而达到攻击的目的(如:盗取用户的Cookie、破坏页面结构、重定向到其它网站等)

例如:网站A有个留言功能,并且程序员没有对用户提交的数据进行过滤,则此时黑客生成恶意的HTML代码并通过留言功能输入到服务器,之后当有用户来访问留言板功能时,就会自动执行恶意代码

XSS的分类

反射性XSS攻击(非持久化)

诱使用户去访问一个包含恶意代码的URL,当用户自己去点击链接才能触发XSS代码(服务器上并没有这样的页面和内容)

存储型XSS攻击(持久化)

将代码通过提交的方式储存到Web服务器或数据库中,用户访问该页面的时候触发代码执行

防御方法

购买防火墙等安全设备,对web内容进行过滤

在程序中对用户输入的数据进行过滤

使用http only禁止JS读取cookie值

CSRF跨站请求伪造攻击——针对用户浏览器的攻击

通过XSS等方式窃取受害者信息(XSS是实现CSRF诸多手段中的一种),然后攻击者伪造受害者的身份,以受害者的身份发起恶意请求,但是这种恶意请求针对服务器端来说它认为是正常的请求

要想完成一次CSRF操作,必须要求用户有以下操作

登录受信任网站A,并在本地生成Cookie

在不登出A的情况下,访问危险网站B(危险网站就是利用CSRF漏洞在网站A上插入图片链接等诱导用户点击)

此时黑客就可以以用户的身份访问网站A

防护措施

服务端没有对是否是用户自愿发起的请求做一个确认,可以通过以下方法来进行防护:

通过安全产品来进行防护(验证HTTP Referer字段、请求地址添加token验证等)

在结束网站访问时不要直接关闭浏览器,要先退出登录

三种攻击方式的区别

主要是通过攻击的目的来进行区分

SQL注入:     获取数据库中的敏感信息

XSS:            控制用户的浏览器执行恶意脚本,盗取信息

CSRF:          伪造受害者身份,受害者能做什么,攻击者就可以做什么

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

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

相关文章

JJJ:组合数据类型

文章目录 序列的索引及切片操作 p42序列的相关操作 p43 序列的索引及切片操作 p42 序列: 一个用于存储多个值的连续空间 每个值都对应一个整数的编号,叫做索引 索引分为:正向递增索引、反向递减索引 序列结构实例: 字符串、 列…

AOP切入点表达式和使用连接点获取匹配到的方法信息

目录 第一种 execution(访问修饰符? 返回值 包名.类名.?方法名(方法参数) throws 异常?) 第二种 annotation(com.itheima.anno.Log 首先,自定义一个注解,可以自己随意命名: 第一种 execution(访问修饰符? 返回值 包名.类名.?方法名…

zookeeper4==zookeeper源码阅读,FOLLOWER收到了需要LEADER执行的命令后各节点会执行什么

上面已经阅读并观察了节点确定自己的身份后会做些什么,大致就是比对双方信息然后完成同步。 本篇阅读, FOLLOWER收到了需要LEADER执行的命令后,怎么同步给LEADER的,并且LEADER会执行什么操作。 源码启动zkCli用于测试 将原本的代…

解决PP材质粘合问题用PP专用UV胶水

PP材料已经广泛应用于各行各业,在粘接中会有不同的问题需求,那么使用专用于PP的UV胶水可能是解决PP材质粘合问题的一种有效方法。 主要在于:UV胶水在紫外线照射下可以快速固化,形成坚固的连接。所以使用PP专用UV胶水时可以考虑&am…

如何在Docker部署draw.io流程图软件并实现公网远程访问

前言 提到流程图,大家第一时间可能会想到Visio,不可否认,VIsio确实是功能强大,但是软件为收费,并且因为其功能强大,导致安装需要很多的系统内存,并且是不可跨平台使用。所以,今天给…

使用axios的详细图文教程

介绍 当我们使用Vue开发项目时,会发送Ajax请求服务器接口,会对axios封装。 Axios(ajax i/o system)不是一种新技术,本质上也是对原生XHR(XMLHttpReques)的封装,只不过它是基于Pr…

和葡萄酒时为什么要写品酒笔记?

如果你不把你的想法写下来,它们可能会在你离开房间之前就离开你的大脑。写笔记,包括令人难忘的品酒笔记,它是关于记录一些超越今天和明天的有意义的事情。这是你的记忆葡萄酒,对你来说最相关、最有区别的就是最重要的。最后&#…

Keil新建STM32软件工程 - (详细步骤图文)

文章目录 1. 前言2. 下载芯片对应的Keil开发包3. 下载芯片对应的标准外设库 - STM32F10x_StdPeriph_Lib_Vx.x.x4. 新建工程文件夹 - Demo34.1 移植标准外设库4.2 启动文件介绍及如何选择 5. 新建软件工程 - Demo5.1 打开Keil → Project → New uVision Project5.2 选择芯片型号…

CSS 的背景属性(开发中常用)

目录 1 内容预览 背景颜色 背景图片 背景平铺 背景图片位置(常用) 背景图像固定 背景复合写法 背景色半透明 实现案例 1 内容预览 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 注意: 把表格中的五个属背下来&#xff0c…

朱卫明:从韶关走向世界的创作型歌手

朱卫明,艺名Aming,是一位来自广东韶关的杰出唱作音乐人。他以其独特的创作才华和深情的嗓音,赢得了众多歌迷的喜爱。作为一名创作型歌手,朱卫明用音乐传递情感,用歌声打动人心。 一、早年经历与音乐启蒙 朱卫明出生于…

Explain工具-SQL性能优化

文章目录 SQL性能优化的目标Explain覆盖索引ExplainindexExplainfilesortExplainfilesort创建 idx_bd(b,d) SQL性能优化的目标 达到 range 级别 Explain覆盖索引 Extra中Using index表示覆盖索引 Explainindex type中是index,代表全索引扫描,磁盘扫…

Sketch for Mac:实现你的创意绘图梦想的矢量绘图软件

随着数字时代的到来,矢量绘图软件成为了广告设计、插画创作和UI设计等领域中必不可少的工具。在众多矢量绘图软件中,Sketch for Mac(矢量绘图软件)以其强大的功能和简洁的界面脱颖而出,成为了众多设计师的首选。 Sket…

【LeetCode:746. 使用最小花费爬楼梯 | 递归 -> 记忆化搜索 -> DP】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

【机器学习】应用KNN实现鸢尾花种类预测

目录 前言 一、K最近邻(KNN)介绍 二、鸢尾花数据集介绍 三、鸢尾花数据集可视化 四、鸢尾花数据分析 总结 🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。 💡本文由Fil…

YOLOv5改进 | 2023 | CARAFE提高精度的上采样方法(助力细节长点)

一、本文介绍 本文给大家带来的CARAFE(Content-Aware ReAssembly of FEatures)是一种用于增强卷积神经网络特征图的上采样方法。其主要旨在改进传统的上采样方法(就是我们的Upsample)的性能。CARAFE的核心思想是:使用…

【LeetCode刷题笔记】155.最小栈

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多算法知识专栏&#xff1a;算法分析&#x1f525; 给大家跳段街舞感谢…

指针运算笔试题解析

题目一 #include <stdio.h>int main(){int a[5] { 1, 2, 3, 4, 5 };int *ptr (int *)(&a 1);printf( "%d,%d", *(a 1), *(ptr - 1));return 0;}// 程序的结果是什么&#xff1f; 答案中显示第一个是2&#xff0c;第二个是5 咱们先来解释一下第一个答…

C语言入门基础(二)

基本概念 地址 计算机的内存是一块用于存储数据的空间&#xff0c;由一系列连续的存储单元组成&#xff0c;就像下面这样&#xff0c; 每一个单元格都表示1个Bit&#xff0c;一个bit在EE专业的同学看来就是高低电位&#xff0c;而在CS同学看来就是0&#xff0c;1两种状态。 …

K8s中pod詳解

目录 Yaml语法解析 Pod pod是如何被创建的 1.创建一个pod 2.创建一个多容器pod 进入容器 3.配置节点标签 4.Pod容器的交互 4.1创建pod&#xff0c;并做本地解析 4.2pod共享进程 4.3pod共享宿主机namespace 5.钩子函数lifecycle 基础指令 # 查看对应资源: 状态 $ kubectl…

人工智能_机器学习065_SVM支持向量机KKT条件_深度理解KKT条件下的损失函数求解过程_公式详细推导---人工智能工作笔记0105

之前我们已经说了KKT条件,其实就是用来解决 如何实现对,不等式条件下的,目标函数的求解问题,之前我们说的拉格朗日乘数法,是用来对 等式条件下的目标函数进行求解. KKT条件是这样做的,添加了一个阿尔法平方对吧,这个阿尔法平方肯定是大于0的,那么 可以结合下面的文章去看,也…