常见Web安全问题及防御策略

article/2025/4/22 12:18:05

1、安全世界观

安全世界观一词是《白帽子讲Web安全》一书的开篇章节,多年后再读经典,仍然受益匪浅!

正如开篇所说的:“互联网本来是安全的,自从有了研究安全的人,互联网就不安全了。” 世上没有攻不破的系统,只有还没攻破的系统,有多少条路可以通罗马,大概就有多少种攻克之道。

1.1 Web安全的兴起

“破坏往往比建设容易”,但凡事都不是绝对的。

跟机场安全检查进行类比。通过一个安全检查(过滤,净化)的过程,可以梳理未知的人或物,使其变得可信任。被划分出来的具有不同信任级别的区域,我们成为信任域,划分两个不同信任域之间的边界,我们称之为信任边界。

数据从高等级的信任域流向低等级的信任域,是不需要经过安全检查的;数据从低等级的信任域流向高等级的信任域,是需要经过信任边界的安全检查。

安全问题的本质是信任的问题。

一切的安全方案设计的基础,都是建立在信任关系上的。我们必须相信一些东西,必须要有一些最基本的假设,安全方案才能得以建立。

1.2 安全的三要素

安全的三要素是安全的基本组成元素,分别为:

机密性(Confidentiality)

机密性要求数据内容不能泄露,加密是实现机密性要求的常见手段。如果不将文件存在抽屉里,而是放在透明的盒子里,那么虽然无法得到这个文件,但是文件的内容将会被泄露。

完整性(Integrity)

完整性则要求保护数据内容是完整,没有被篡改的。常见的保证一致性的技术手段是数字签名。

可用性(Availability)

可用性要求保护资源是“随需而得”。

举例来说,假如有100个车位,有一天一个坏人搬了100块大石头将车位全占了,那么停车场无法再提供正常服务。在安全领域中叫做拒绝服务攻击,简称DoS(Denial of Service)。拒绝服务攻击破坏的是安全的可用性。

1.3 白帽子兵法

Secure By Default原则

1)黑名单、白名单

实际上,Secure By Default原则,也可以归纳为白名单,黑名单的思想。如果更多地使用白名单,那么系统就会变得更安全。

2)最小权限原则

最小原则要求系统只授予主体必要的权限,而不要过度授权,这样能有效地减少系统,网络,应用,数据库出错的机会。

如果网站只提供Web服务,只允许开启80,443端口,屏蔽其它端口。

纵深防御原则

纵深防御原则包含两层含义:

1)要在各个不同层面,不同方面实施安全方案,避免出现疏漏,不同安全方案之间需要相互配合,构成一个整体;

2)要在正确的地方做正确的事情,即:在解决根本问题的地方实施针对性的安全方案。

数据与代码分离原则

这一原则适用于各种由于“注入”而引发安全问题的场景。

实际上,缓冲区溢出,也可以认为是程序违背了这一原则的后果——程序在栈或者堆中,将用户数据当做代码执行,混淆了代码与数据的边界,从而导致安全问题的发生。

不可预测性原则

微软使用的ASLR技术,在较新版本的Linux内核中也支持。在ASLR的控制下,一个程序每次启动时,其进程的栈基址都不相同,具有一定的随机性,对于攻击者来说,这就是“不可预测性”。

不可预测性,能有效地对抗基于篡改,伪造的攻击。

不可预测性的实现往往需要用到加密算法,随机数算法,哈希算法,好好利用这条规则,在设计安全方案时往往会事半功倍。

2、常见WEB安全

2.1 XSS

XSS (Cross Site Script),跨站脚本攻击,因为缩写和 CSS (Cascading Style Sheets) 重叠,所以只能叫 XSS。

XSS 的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。XSS 的攻击方式千变万化,但还是可以大致细分为几种类型:

非持久型XSS

也叫反射型 XSS 漏洞,一般是通过给别人发送带有恶意脚本代码参数的 URL,当 URL 地址被打开时,特有的恶意代码参数被 HTML 解析、执行。

持久型XSS

持久型 XSS 攻击不需要诱骗点击,黑客只需要在提交表单的地方完成注入即可,但是这种 XSS 攻击的成本相对还是很高。

未经验证的跳转XSS

一些场景是后端需要对一个传进来的待跳转的 URL 参数进行一个 302 跳转,可能其中会带有一些用户的敏感(cookie)信息。

2.2 CSRF

CSRF(Cross-Site Request Forgery),名为:跨站请求伪造攻击。

那么 CSRF 到底能够干嘛呢?

你可以这样简单的理解:攻击者可以盗用你的登陆信息,以你的身份模拟发送各种请求。攻击者只要借助少许的社会工程学的诡计。

例如通过 QQ 等聊天软件发送的链接(有些还伪装成短域名,用户无法分辨),攻击者就能迫使 Web 应用的用户去执行攻击者预设的操作。例如,当用户登录网络银行去查看其存款余额,在他没有退出时,就点击了一个 QQ 好友发来的链接,那么该用户银行帐户中的资金就有可能被转移到攻击者指定的帐户中。

所以遇到 CSRF 攻击时,将对终端用户的数据和操作指令构成严重的威胁。当受攻击的终端用户具有管理员帐户的时候,CSRF 攻击将危及整个 Web 应用程序。

CSRF 原理

下图大概描述了 CSRF 攻击的原理:


CSRF 攻击必须要有三个条件 :

1. 用户已经登录了站点 A,并在本地记录了 cookie

2 . 在用户没有登出站点 A 的情况下(也就是 cookie 生效的情况下),访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。

3 . 站点 A 没有做任何 CSRF 防御

预防 CSRF

CSRF 的防御可以从服务端和客户端两方面着手,防御效果是从服务端着手效果比较好,现在一般的 CSRF 防御也都在服务端进行。服务端的预防 CSRF 攻击的方式方法有多种,但思路上都是差不多的,主要从以下两个方面入手 :

1 . 正确使用 GET,POST 请求和 cookie

2 . 在非 GET 请求中增加 token

CSRF 的防御可以根据应用场景的不同自行选择。CSRF 的防御工作确实会在正常业务逻辑的基础上带来很多额外的开发量,但是这种工作量是值得的,毕竟用户隐私以及财产安全是产品最基础的根本。

2.3 SQL 注入

SQL 注入漏洞(SQL Injection)是 Web 开发中最常见的一种安全漏洞。攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。

而造成 SQL 注入的原因是因为程序没有有效的转义过滤用户的输入,使攻击者成功的向服务器提交恶意的 SQL 查询代码,程序在接收后错误的将攻击者的输入作为查询语句的一部分执行,导致原始的查询逻辑被改变,额外的执行了攻击者精心构造的恶意代码。

如何预防

防止 SQL 注入主要是不能允许用户输入的内容影响正常的 SQL 语句的逻辑,当用户的输入信心将要用来拼接 SQL 语句的话,我们应该永远选择不相信,任何内容都必须进行转义过滤,当然做到这个还是不够的,下面列出防御 SQL 注入的几点注意事项:

严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害;

后端代码检查输入的数据是否符合预期,严格限制变量的类型,例如使用正则表达式进行一些匹配处理;

对进入数据库的特殊字符进行转义处理,或编码转换;

所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句。

2.4 DDoS 攻击

DDoS 又叫分布式拒绝服务,全称 Distributed Denial of Service。

其原理就是利用大量的请求造成资源过载,导致服务不可用,这个攻击应该不能算是安全问题,这应该算是一个另类的存在,因为这种攻击根本就是耍流氓的存在,「伤敌一千,自损八百」的行为。

DDoS 攻击可以理解为:「你开了一家店,隔壁家店看不惯,就雇了一大堆黑社会人员进你店里干坐着,也不消费,其他客人也进不来,导致你营业惨淡」。

也许你的站点遭受过 DDoS 攻击,具体什么原因怎么解读见仁见智。DDos 攻击从层次上可分为网络层攻击与应用层攻击,从攻击手法上可分为快型流量攻击与慢型流量攻击,但其原理都是造成资源过载,导致服务不可用。

主要分类

网络层的 DDoS 攻击究其本质其实是无法防御的,我们能做得就是不断优化服务本身部署的网络架构,以及提升网络带宽。

应用层 DDoS 攻击不是发生在网络层,是发生在 TCP 建立握手成功之后,应用程序处理请求的时候,现在很多常见的 DDoS 攻击都是应用层攻击。

应用层的防御有时比网络层的更难,因为导致应用层被 DDoS 攻击的因素非常多,有时往往是因为程序员的失误,导致某个页面加载需要消耗大量资源,有时是因为中间件配置不当等等。

而应用层 DDoS 防御的核心就是区分人与机器(爬虫),因为大量的请求不可能是人为的,肯定是机器构造的。因此如果能有效的区分人与爬虫行为,则可以很好地防御此攻击。

总结

Web 安全的对于 Web 从业人员来说是一个非常重要的课题。本文介绍了安全世界观,以及常见Web 相关的三种安全防御知识,希望大家以后的工作中不要误入踩雷,希望对大家有所帮助!

安全是一门朴素的学问,也是一种平衡的艺术,无论是传统安全,还是互联网安全,其内在原理都是一样的。我们只需抓住安全问题的本质,之后无论遇到任何安全问题,都会无往而不利!


http://chatgpt.dhexx.cn/article/xLGvEYHB.shtml

相关文章

基于联邦学习中毒攻击的防御策略

文章目录 联邦学习简介FL(federal learning)和模型中毒攻击的背景针对模型中毒攻击的防御策略局部模型更新的评估方法基于光谱异常检测的方法( Spectral Anomaly Detection Based Method)基于真理推理的评估方法基于熵的滤波方法基于余弦相似…

DDos攻击防御策略

DDOS攻击防御策略 DDOS(DDOS:Distributed Denial of Service) 分布式拒绝服务攻击. 在信息安全三要素里面—保密性,完整性,可用性,中DDOS(分布式拒绝服务攻击),针对的是目标机器的可用性,这种攻击方式是利用目标系统网络系统功能的的欠缺或者直接消耗其资源,是目标机器木法正常…

网络安全威胁与防御策略

第一章:引言 随着数字化时代的快速发展,网络已经成为人们生活和工作中不可或缺的一部分。然而,网络的广泛应用也引发了一系列严峻的网络安全威胁。恶意软件、网络攻击、数据泄露等问题层出不穷,给个人和企业带来了巨大的风险。本文…

安全文章研读:深度学习对抗攻击防御策略的一些实现

本文整理自哈尔滨工业大学硕士论文:深度学习对抗攻击防御策略的研究与实现 0x01 太长不看 深度学习在表现优异的同时,还存在易受攻击的缺陷。多数防御策略只能应对特定的攻击方法,普适性比较低,另外这些防御策略多为全局过滤扰动…

过拟合与欠拟合的生动理解

文章目录 1、过拟合2、欠拟合3、图像表现4、解决办法 1、过拟合 过拟合(OverFititing):太过贴近于训练数据的特征了,在对应训练集上表现非常优秀,近乎完美的预测/区分了所有的数据,但是在新的测试集上却表…

模型的过拟合与欠拟合

样本数据集:样本数据集总是表现为数据的内在规律(如:yf(x))与随机噪声共同作用的结果。 训练集:训练集是用于训练模型的样本数据集合。我们总是希望通过训练集,找到真实数据的内在规律,同时又希…

如何解决过拟合与欠拟合

如何解决过拟合与欠拟合 根据不同的坐标方式,欠拟合与过拟合图解不同。 1.横轴为训练样本数量,纵轴为误差 如上图所示,我们可以直观看出欠拟合和过拟合的区别: ​ 模型欠拟合:在训练集以及测试集上同时具有较高的误…

机器学习中的过拟合与欠拟合

目录 一、什么是过拟合与欠拟合二、原因及解决方法三、正则化类别四、拓展—原理 问题:训练数据训练的很好啊,误差也不大,为什么在测试集上面有 问题呢? 当算法在某个数据集当中出现这种情况,可能就出现了过拟合现象。…

机器学习之过拟合与欠拟合

1 机器学习中的误差 一般地,将学习器(机器学习模型)的实际预测输出与样本的真实输出之间的差异称为“误差”(error)。 统计学习的目的是使学到的模型不仅对已知数据而且对未知数据都能有很好的预测能力。不同的学习方法会给出不同的模型。当损失函数给定时&…

机器学习过拟合与欠拟合!

↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:胡联粤、张桐,Datawhale面经小组 Q1 如何理解高方差与低偏差? 模型的预测误差可以分解为三个部分: 偏差(bias), 方差(variance)…

机器学习:过拟合与欠拟合问题

本文首发于 AI柠檬博客,原文链接:机器学习:过拟合与欠拟合问题 | AI柠檬 过拟合(overfitting)与欠拟合(underfitting)是统计学中的一组现象。过拟合是在统计模型中,由于使用的参数过…

机器学习知识总结 —— 6. 什么是过拟合和欠拟合

文章目录 过拟合欠拟合泛化能力避免过拟合的一般方法从数据集上规避从训练模型上规避从训练过程上规避 作为从「统计学(Statistics)」跟「计算机科学(Computer Science)」交叉而诞生的新学科「机器学习(Machine Learni…

VGG16网络结构要点

学习BCNN的过程时遇到,VGG16的网络结构如下图示意: 13个卷积层(Convolutional Layer),分别用conv3-XXX表示3个全连接层(Fully connected Layer),分别用FC-XXXX表示5个池化层(Pool …

VGG-16网络结构解析

VGG,也叫做VGG-16网络。这个网络结构很有意思,相必实现这个网络的作者是有点强迫症,不然整个网络为什么能够如此的协调一致。基本上每一次的内容都大同小异,2层或3层卷积层,激活一下,池化一下,就…

VGGNet网络结构

深度神经网络一般由卷积部分和全连接部分构成。卷积部分一般包含卷积(可以有多个不同尺寸的核级联组成)、池化、Dropout等,其中Dropout层必须放在池化之后。全连接部分一般最多包含2到3个全连接,最后通过Softmax得到分类结果&…

VggNet网络结构详解

VggNet网络结构详解 #图像识别网络结构详解 一、概述 VGG在2014年由牛津大学著名研究组VGG (Visual Geometry Group) 提出,斩获该年ImageNet竞赛中 Localization Task (定位任务) 第一名 和 Classification Task (分类任务) 第二名。 二、网络详解 VGG16相比Al…

VGG11、VGG13、VGG16、VGG19网络结构图

VGG11、VGG13、VGG16、VGG19网络结构图 前言 前言 VGG网络采用重复堆叠的小卷积核替代大卷积核,在保证具有相同感受野的条件下,提升了网络的深度,从而提升网络特征提取的能力。 可以把VGG网络看成是数个vgg_block的堆叠,每个vgg_…

VGG网络结构详解与模型的搭建

首先贴出三个链接: 1. VGG网络结构详解视频 2. 使用pytorch搭建VGG并训练 3. 使用tensorflow搭建VGG并训练 VGG网络是在2014年由牛津大学著名研究组VGG (Visual Geometry Group) 提出,斩获该年ImageNet竞赛中 Localization Task (定位任务) 第一名 和…

【深度学习】VGG16网络结构复现 | pytorch |

文章目录 前言一、VGG16介绍二、VGG16网络复现——pytorch 前言 这篇文章按道理来说应该是很简单的,但是因为一个很小的bug,让我难受了一晚上,直到现在我也没找出原因。后面我会提到这个bug。 今天这篇文章主要用来手动搭建vgg16这个网路&am…

经典卷积神经网络---VGG16网络

VGG16网络结构及代码 下图为VGG网络结构图,最常用的就是表中的D结构,16层结构(13层卷积3层全连接层),卷积的stride为1,padding为1,maxpool的大小为2,stride为2(池化只改…