22.4、Web应用漏洞分析与防护

news2025/5/10 19:36:16

目录

    • Web应用安全概述
    • DWASP Top 10
    • Web应用漏洞防护 - 跨站脚本攻击XSS
    • Web应用漏洞防护 - SQL注入
    • Web应用漏洞防护 - 文件上传漏洞
    • Web应用漏洞防护 - 跨站脚本攻击XSS

Web应用安全概述

技术安全漏洞,主要是因为技术处理不当而产生的安全隐患,比如SQL注入漏洞,跨站脚本(XSS)、恶意文件执行等

第二个是业务逻辑安全漏洞,主要是由于业务流程考虑不周到,或者是处理不当造成的安全隐患。比如用户找回密码缺陷,一般我们找回密码的时候是需要输入你的手机验证码,而且你的手机号是你当初注册时使用的那个手机号,如果他让你重新输入一个新的手机号,那么就绕过了以前的手机号,所有人输入一个新手机号,那都可以找回密码了,所以这肯定不安全

短信炸弹漏洞,一般我们输验证码都要隔一分钟输一次,而且验证码获取的次数都有限制,如果你不做限制,他一分钟可能让你后台服务器发十万条验证码,这会耗尽短信资源,短信都是要钱的,所以这些就是业务逻辑的安全漏洞,我们在做网站规划设计的时候,是需要注意的

DWASP Top 10

第一个是注入漏洞,它主要是攻击者构造恶意的数据输入,诱使解析器在没有适当授权的情况下执行非预期的命令或者访问我们的数据,最典型的就是SQL注入,攻击者通过在网页里面输入一些非法的SQL命令,往我们后台的数据库里面插入黑客想要插入的一些字段,比如说你插入一个新的用户名和密码,比如说要访问超级管理员的用户名、密码,造成的效果就是执行非预期的命令或者非法访问我们后台的数据。

第二个遭受破坏的认证,web应用程序当中,可能存在不限制身份认证的尝试,比如说你可以一分钟去尝试认证一万次,而后台没有限制。这样可以比较方便的猜他的密码,所以其实我们在做web安全设定的时候,经常要限制认证的次数

第二个是web会话令牌的泄露,认证之后,它会给一个会话令牌,这个令牌被泄露之后,可能造成一些非法访问

应用会话超时设置不正确,比如说登录网银,你五分钟,没有任何操作,就被自动的踢出来了,如果不做设置或者设置成24小时都不被踢,那么你这个人走了之后,你的这个网银可能被他人操作,这样就不安全了

web应用口令复杂度不高,或者允许使用历史口令等问题,这些就是口令策略,这些策略这些问题都可能给我们的web认证机制带来影响

第三个敏感数据暴露漏洞,就是我们后台存储的数据,如果是明文,可能被黑客窃取,甚至可能被内鬼窃取,所以关键的数据我们要加密,对我们的用户名密码这一类的敏感数据,我们要通过哈希这种形式来存储

第四个XML外部实体引用漏洞,针对这一类漏洞,攻击者可以利用外部实体窃取uri文件处理器的内部文件和共享文件、监听内部扫描端口,执行远程代码和实施拒绝服务攻击

本来我是要访问etc/passwd文件的,但是我把后面的访问目录,改成访问某个IP地址下面的某一个文件,通过这种方式就可以探测我们服务器相关的一些IP地址,还有他的一些文件目录,这就是XML外部实体引用漏洞

第五个受损害的访问控制漏洞,主要是未对通过身份验证的用户进行适当的访问控制。因为不同的身份,它是有不同的权限,如果你没有设置相应的访问权限,比如说所有用户都可以访问管理员才能查看的敏感文件,这就造成了访问控制问题

第六个安全配置错误,包括不安全的默认配置,不完整的临时配置,开源云存储,错误的http标头配置以及包含敏感信息的详细错误信息。如果用户登录有错误,你给他返回四零四这一类的信息就行了,更完整的一些详细信息可能涉及到后台服务器版本,包括产生错误的一系列原因,这些是不用给外部用户看的,给内部管理员看就行了

比如说目录列表在服务器未被禁用,就是我们的用户登录,他可以看到我们WEB服务器的所有目录,这是很不安全的,导致攻击者可以列出所有目录,这个是需要去隐藏目录,隐藏后台服务器的版本号,包括隐藏一些关键配置

第七个跨站脚本漏洞,就是当应用程序中的新网页当中包含不受信任的,未经恰当验证或者转义的数据时,或者使用可以创建的HTML或JavaScript,浏览器API更新现有的网页时就会出现跨站脚本的缺陷,跨站脚本能够让攻击者在受害者的浏览器当中执行脚本,劫持用户的会话破坏网站或者将用户重定向到恶意站点,它能够在受害者的浏览器上去执行相应的脚本,这些脚本是攻击者让你执行的,劫持用户的会话,破坏我们的网站,在网站中插入一些新的内容,这新插入的新内容就是我们攻击者窃取用户信息的一种方式,或者直接将你定向到其他恶意的网站里面去。

Web应用漏洞防护 - 跨站脚本攻击XSS

这是钓鱼网站使用跨站脚本攻击,控制服务终端的浏览器的显示来达到攻击目的
在这里插入图片描述
这是用户真实的银行网站,这是攻击者的网站。它在用户的浏览器上显示了两部分的内容,第一部分是我们正常的网站,然后在这个空的位置上显示了我们攻击者的内容相当于我们这个用户去访问真实的网站,其实在最后得到的内容是一部分是真实的,一部分是黑客嵌入的内容,相当于就是破坏了我们网站的完整性。给你插入了一部分内容,这一部分内容是有危害的,这部分内容可能是窃取你的信息,也可能是直接给你挂一个网页木马,让你中木马

第八个叫非安全反序列化漏洞。序列化简单理解,就是把内存里边状态化的信息读成一个文件,把它写到一个文件里面,这叫序列化。然后反序列化,就是把这个文件,再给你搞到内存里面,形成一个状态化的信息,把它读到内存里面去执行,这叫反序列化。

非安全的反序列化,就是相当于把文件读到内存里面去执行。这个读的文件有可能是我们黑客构造的一个恶意代码,通过这种方式就可以利用它来执行攻击,包括重播攻击,注入等等,这些攻击都可以执行,这叫非安全的反序列化漏洞

第九个是使用含有已知漏洞的组件,比如说库、框架,还有其他的模块,典型的像我们的SSL它是一个加密的模块。SSL模块以前报了一个漏洞,这种漏洞是可能出现的,还有像pgp也是一个安全组件,它里面包含数字签名,身份认证等等一系列的功能,这个组件也有可能有漏洞,这是有漏洞的组件

第十个非充分的日志记录和监控,我们要求对网站进行日志记录和监控,如果你记录不充分,后期出了问题,那么你可能找不到什么原因

Web应用漏洞防护 - SQL注入

第一个对应用程序输入,进行安全过滤,本来我的网页是让你输入用户名密码的,但是你给我输入针对数据库的增删改查,从而去修改我后台的数据库,或者查询我数据库的内容,这是不允许的,所以我们对用户的输入进行过滤,你就老老实实的输用户名密码,不要给输drop、delete这种敏感的针对数据库的操作

第二个是设置应用程序的最小化权限。sql注入攻击是利用网页应用程序的权限,对数据库进行操作。如果最小化设置数据库和网页应用程序的执行权限,可以阻止我们非法SQL的执行,可以减少攻击带来的一个破坏影响。比如说你直接输入,你就有这个管理员的权限,那肯定对后台造成的影响是比较大的,我们可以建立独立的账号,使用最小权限来操作数据库,以免给攻击者可乘之机

第三个部署数据库防火墙或者数据库审计系统,通过部署这些系统能实现过滤用户输入的效果,一些敏感的输入你输不进去,包括对数据库敏感操作,你也操作不了,直接给你过滤掉

第四个屏蔽应用程序错误提示信息,有些时候输入错误之后,用户的浏览器上会显示出错误信息,有些时候会包含比较敏感的像ODBC的类型,数据库引擎,数据库的名称、表的名称等等,这些名称在给到用户的时候,要把它给过滤掉,防止攻击者通过我们返回的一些错误信息来了解我们数据库的内部情况。

第五个对开源的网页应用程序做适当的改造,你要对它进行相应的安全增强,防止黑客利用我们已知的表结构,比较轻易的对我们的数据库进行注入攻击

我们解决的时候,其实第一个最重要的就是检查输入,第二个部署相应的安全设备。

Web应用漏洞防护 - 文件上传漏洞

黑客可以向网站后台上传一些文件,并且这个文件可以自动执行,比如常见的就上传木马,网页木马,第一个将上传目录设置为不可执行,你能上传,但是你上传上去执行不了,你的木马执行不了,那就没用,可以通过这种方式避免上传文件远程触发执行或者自动执行

第二个检查上传文件的安全性。如果发现上传的文件有木马,有病毒或者其他的恶意代码,能够自动阻断你的上传,这是针对上传漏洞的解决方案。

Web应用漏洞防护 - 跨站脚本攻击XSS

主要是利用网站中的漏洞,向URL当中注入一些恶意脚本,欺骗我们的用户,比如说把你的网站内容做一个替换,比如说在你的网站中嵌入脚本,新增一部分内容,或者是强制让你去加载其他的外部脚本,让你强制的去浏览第三方的网页,这是跨站脚本攻击的几种方式

相当于就是在正常的网页里当中嵌入一部分内容,这是黑客想让你看到的有攻击性的内容。比如一个正常的官网,给你嵌入一部分反动言论

解决跨战脚本攻击,第一个检查用户的输入,跟SQL注入有点类似,SQL注入最后攻击的是后台的数据库,是注入的数据库,而跨站脚本,它攻击的实际上是网页是web,但是都是通过不合法的输入来做的攻击,检查用户的输入

第二个针对网页的攻击都可以用waf,web应用防火墙

第三个对你的数据做相应的备份和恢复,即使被攻击了,可以有效的快速的做恢复,第三个相当于偏向于管理

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

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

相关文章

SpringBoot实战:高效获取视频资源

文章目录 前言技术实现SpringBoot项目构建产品选取配置数据采集 号外号外 前言 在短视频行业高速发展的背景下,海量内容数据日益增长,每天都有新的视频、评论、点赞、分享等数据涌现。如何高效、精准地获取并处理这些庞大的数据,已成为各大平…

迅为RK3568开发板篇OpenHarmony实操HDF驱动配置LED-LED测试

将编译好的镜像全部进行烧写,镜像在源码根目录 out/rk3568/packages/phone/images/目录下。 烧写完成之后,在调试串口查看打印日志,如下图所示: 然后打开 hdc 工具,运行测试程序,输入“led_test 1”&…

OpenGL ES -> 投影变换矩阵完美解决绘制GLSurfaceView绘制图形拉伸问题

GLSurfaceView绘制图形拉伸问题 假如在XML文件中声明GLSurfaceView的宽高为 android:layout_width"match_parent"android:layout_height"match_parent GLSurfaceView绘制的图形在Open GL ES坐标系中,而Open GL ES坐标系会根据GLSurfaceView的宽高将…

玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成

系列文章目录 玩转大语言模型——使用langchain和Ollama本地部署大语言模型 玩转大语言模型——三分钟教你用langchain提示词工程获得猫娘女友 玩转大语言模型——ollama导入huggingface下载的模型 玩转大语言模型——langchain调用ollama视觉多模态语言模型 玩转大语言模型—…

图书管理项目(spring boot + Vue)

想要该项目的话,就 jia 我,并在评论区给我说一下,只需要1元,我把整个项目发给你 jia微:18439421203(名字叫:Bingo) 运行图片:

【机器学习】简单线性回归算法及代码实现

线性回归算法 一、摘要二、线性回归算法概述三、损失函数的定义和衡量标准四、简单线性回归的求解和应用五、机器学习算法一般求解思路 一、摘要 本文讲解了线性回归算法的基础知识和应用,强调线性回归主要用于解决回归问题。通过分析房产价格与房屋面积的关系&…

AI-大模型(3)-MoE模型

1.什么是MOE模型 多个领域专家共同工作,并行计算。 2.MOE如何工作 gate层:根据输入Token选择专家 基于Token来选择专家 Gate层选择专家 除专家外,其他层共享一个token可以选择多个专家 一个token 可以选择一个专家或者多个专…

PySide(PyQT)使用场景(QGraphicsScene)进行动态标注的一个demo

用以标注图像的一个基本框架demo import sys from PySide6.QtWidgets import QApplication, QGraphicsView, QGraphicsScene, QMainWindow, QLabel, QGraphicsPixmapItem from PySide6.QtGui import QPixmap, QPainter, QTransform from PySide6.QtCore import Qt, QPointF, S…

w206基于Spring Boot的农商对接系统的设计与实现

🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…

C++类和对象进阶:拷贝构造函数深度详解

拷贝构造函数 拷贝构造函数前言引入拷贝构造函数特征拷贝构造函数建议参数加上const 拷贝构造函数参数传值会引发无穷递归的解释内置类型传参拷贝自定义类型传参拷贝详细解释 编译器生成的默认拷贝构造函数默认构造函数做了什么?深拷贝与浅拷贝简单实现一个深拷贝。…

像取快递一样取文件?

看到一个很有意思的项目,像我们做软件分享的感觉会有用,就是现在服务器费用太贵了,如果自建的话感觉不是很值得。 FileCodeBox FileCodeBox 是一个轻量级的文件分享系统,它基于匿名口令分享文本和文件,无需注册登录&…

DeepSeek 助力 Vue 开发:打造丝滑的返回顶部按钮(Back to Top)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

【前端开发学习笔记15】Vue_8

手动添加Pinia到Vue项目: 在实际开发中,Pinia配置可在项目创建时自动添加。初次学习从零开始: 1. 用Vite创建空的Vue3项目,命令为npm create vuelatest。 2. 按官方文档将pinia安装到项目中。 import { createApp } from vue im…

通过docker启用rabbitmq插件

创建文件,docker-compose.yml services:rabbitmq:image: rabbitmq:4.0-managementports:- "5672:5672"- "15672:15672"volumes:- ./data/rabbitmq/data:/var/lib/rabbitmq # 持久化数据- ./data/rabbitmq/plugins/rabbitmq_delayed_message_ex…

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 与基于 openEuler 构建 LVS-DR 群集

一、 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 NAT 模式 部署简单:NAT 模式下,所有的服务器节点只需要连接到同一个局域网内,通过负载均衡器进行网络地址转换,就可以实现负载均衡功能。不需要对…

C++17 中 std::lcm:从入门到精通

文章目录 一、引言二、std::lcm 的基本概念三、入门示例四、计算多个整数的最小公倍数五、std::lcm 的实现原理六、在实际项目中的应用七、注意事项八、总结 一、引言 在 C 编程中,处理数学运算时,计算最小公倍数(Least Common Multiple&…

html 点击弹出视频弹窗

一、效果: 点击视频按钮后,弹出弹窗 播放视频 二、代码 <div class="index_change_video" data-video-src="</

代码随想录算法【Day44】

Day44 1143.最长公共子序列 class Solution { public:int longestCommonSubsequence(string text1, string text2) {vector<vector<int>> dp(text1.size() 1, vector<int>(text2.size() 1, 0));for (int i 1; i < text1.size(); i) {for (int j 1; …

项目总结:java agent的使用

测试团队会做java agent的事&#xff0c;实现测试模拟&#xff0c;各种数据采集等等工作&#xff0c;而这些不需要开发改代码来做到&#xff0c;只需要挂载下agent。 目录 javaagent认识和例子代码例子&#xff1a;java.lang.instrument自定义实现一个javaagentagent jar测试 回…

如何借助NoETL指标平台实现数据分析、决策的提效?

通常&#xff0c;企业通过明确分析目标、定位所需分析的数据&#xff0c;再通过多渠道汇集销售数据、客户反馈、市场调研等信息&#xff0c;经过数据清洗、缺失值处理及格式标准化等手段&#xff0c;运用描述性统计、回归分析、聚类分析及关联规则挖掘等多样分析方法&#xff0…