五大注入攻击网络安全类型介绍
1. SQL注入(SQL Injection)
SQL注入流程
1.1. 概述
SQL注入是最常见的注入攻击类型之一,攻击者通过在输入字段中插入恶意的SQL代码来改变原本的SQL逻辑或执行额外的SQL语句,来操控数据库执行未授权的操作(如拖库、获取管理员信息、获取 WebShell权限等)。
1.2. 攻击方式
攻击者可以通过输入特定的SQL查询语句,获取敏感数据、修改数据或删除数据。例如,在登录表单中用户名称中输入 admin' OR '1'='1,可能导致绕过身份验证。
1.3. 防御措施
参数化查询:使用参数化查询(Prepared Statements)和存储过程,避免直接拼接SQL语句。
输入验证:对用户输入进行严格的验证和过滤。禁止在代码中或者存储过程中使用exec语句直接执行外部输入的参数或者使用外部输入拼接的SQL 语句。
最小化特权:限制数据库用户特权。
2. 脚本注入(Cross-Site Scripting, XSS)
XSS注入流程
2.1. 概述
XSS攻击允许攻击者在用户的浏览器中执行恶意脚本,通常用于窃取用户的会话信息、Cookies等。
应用程序包含反射式输入类型时容易出现跨站脚本攻击。比如弹出一个假的窗口骗取用户信息。
2.2. 攻击方式
攻击者将恶意JavaScript代码注入到网页中,当用户访问该网页时,代码会在用户的浏览器中执行。例如,攻击者在评论区输入 <script>alert('XSS');</script>。
2.3. 防御措施
对用户输入进行HTML转义,避免执行恶意代码;
用户可控数据输出至http响应中时要对输出进行编码;
使用内容安全策略(CSP)限制可执行的脚本源。
3. 命令注入(Command Injection)
命令注入流程
3.1. 概述
命令注入攻击允许攻击者在服务器上执行任意命令,通常通过在输入字段中插入系统命令来实现。
3.2. 攻击方式
攻击者可以通过输入特定的命令,如 ; ls -la,来执行系统命令。例如,在一个文件上传功能中,如果没有对输入进行有效过滤,攻击者可能上传恶意脚本。
3.3. 防御措施
使用安全函数:尽量不要从应用程序层代码中调用OS命令,如果实在要调用请使用封装后的安全函数;
输入过滤,避免执行未授权的命令:
对参数进行白名单校验,如验证输入只包含字母,没有其他语法关键字或空格等。
黑名单过滤,拦截命令注入特殊字符。
参数编码:对常见特殊字符进行转码,避免命令注入。
4. XML注入(XML Injection)
XML注入流程
4.1. 概述
XML注入攻击通过向XML数据中插入恶意内容,来操控XML解析器的行为。例如,攻击者可以插入额外的XML节点,导致数据泄露或系统崩溃。
4.2. 攻击方式
攻击者可以通过构造恶意的XML数据,影响后端系统的处理逻辑,主要有以下两种攻击方式:
普通注入:XML 注入攻击和SQL 注入攻击的原理一样,利用了XML 解析机制的漏洞,如果系统对用户输入"<",">"没有做转义的处理,攻击者可以修改XML 的数据格式,或者添加新的XML 节点,就会导致解析XML 异常,对流程产生影响。
外部实体注入:外 部 实 体 (XML External Entity,XXE) 注入攻击,由于程序在解析输入的XML 数据时,解析了攻击者伪造的外部实体而引发的攻击者利用站外脚部本实体的引用功能可实现对任意支件的读取。
4.3. 防御措施
对XML输入进行严格的验证和过滤;
使用安全的XML解析库,避免处理恶意构造的XML。
5. LDAP注入(LDAP Injection)
目录服务是一个集中式数据库,包含主体和客体的有关信息,如身份认证数据。许多目录服务都基于轻量级目录访问协议(Lightweight Directory Access Protocol,LDAP) 。比如,微软活动目录域服务(Microsoft Active Directory Domain Services,ADDS)就是基于LDAP的。
可以将 LDAP 目录看作是针对网络服务和资产的电话簿。用户、客户端和进程可以检索目录服务,从而定位所需系统或资源的位置。
5.1. 概述
LDAP注入攻击通过向LDAP查询中插入恶意代码,来操控LDAP服务器的行为。
LDAP注入原理类似SQL注入。
5.2. 攻击方式
攻击者可以通过输入特定的LDAP查询语句,获取未授权的用户信息。
例如,输入 *)(uid=*))可能导致查询所有用户。
5.3. 防御措施
使用参数化查询来构造LDAP查询;
对用户输入进行严格的验证和过滤。
6. 总结
注入攻击是一种严重的安全威胁,了解各种注入类型及其防御措施对于保护应用程序的安全至关重要。开发者应始终遵循安全编码实践,确保应用程序能够抵御这些攻击。
————————————————
原文链接:https://blog.csdn.net/leah126/article/details/140837753
相关文章:

五大注入攻击网络安全类型介绍
1. SQL注入(SQL Injection) SQL注入流程 1.1. 概述 SQL注入是最常见的注入攻击类型之一,攻击者通过在输入字段中插入恶意的SQL代码来改变原本的SQL逻辑或执行额外的SQL语句,来操控数据库执行未授权的操作(如拖库、获取…...

linux-L9.linux中对文件 按照时间排序 显示100 个
find . -type f -exec stat --format %Y %n {} | sort -nr | head -n 100解释: • find . -type f:在当前目录下查找所有文件。 • -exec stat --format ‘%Y %n’ {} :对每个找到的文件执行stat命令,以获取文件的修改时间&#…...

springboot从分层到解耦
注释很详细,直接上代码 三层架构 项目结构 源码: HelloController package com.amoorzheyu.controller;import com.amoorzheyu.pojo.User; import com.amoorzheyu.service.HelloService; import com.amoorzheyu.service.impl.HelloServiceA; import o…...

网络视频流解码显示后花屏问题的分析
问题描述 rtp打包的ps视频流发送到客户端后显示花屏。 数据分析过程 1、用tcpdump抓包 tcpdump -i eth0 -vnn -w rtp.pcap 2、用wireshark提取rtp的payload 保存为record.h264文件 3、用vlc播放器播放 显示花屏 4、提取关键帧 用xxd命令将h264文件转为txt文件 xxd -p…...
MySQL 大量 IN 的查询优化
背景 (1)MySQL 8.0 版本 (2)业务中遇到大量 IN 的查询,例: SELECT id, username, icon FROM users WHERE id IN (123, 523, 1343, ...);其中 id 为主键,IN 的列表长度有 8000 多个 问题 …...
python运维
环境准备 安装python3环境 # centos 安装python3 yum install python3创建激活venv python3 -m venv .venv source .venv/bin/activatezookeeper pip install kazoo 递归复制目录 from kazoo.client import KazooClientdef copy_node(zk, source_path, destination_path)…...

gen_server补充基础学习
学习gen_server的回调结构 gen_server:start_link(Name, Mod, InitArgs, Opts)这个调用是所有事物的起点。它 会创建一个名为Name的通用服务器,回调模块是Mod,Opts则控制通用服务器的行为。在这里可以指定消息记录、函数调试和其他行为。通用服务器通过…...
Python 入门教程(3)基础知识 | 3.1、基础语法
文章目录 一、 基础语法1、缩进规则2、标识符3、多行语句 一、 基础语法 1、缩进规则 学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。缩进的空白数量是可…...
git 合并分支并解决冲突
git 合并分支并解决冲突 切换分支 git checkout <branch-name> 首先切换到要合并的目标分支 合并分支 git merge <source-branch> //将源分支代码合并到当前分支中,源分支的各项新增的提交都会按时间点插入到当前分支的提交记录中 git merge …...

《程序猿之设计模式实战 · 装饰者模式》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
[K8S]Forbidden: pod updates may not change fields other than
背景 在执行kubectl apply -f pod-nginx.yaml的时候报错 The Pod "nginx-test" is invalid: spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`, `spec.initContainers[*].image`, `spec.activeDeadlineSeconds`, `spec.to…...
C/C++漏洞检测数据集汇总
漏洞检测这个方向最近几年尤为热门,尤其是与深度学习技术相结合的研究,同时一些公开可用的数据集的出现也进一步推动了这些技术的发展。本篇文章总结归纳了目前在 C/C 源代码漏洞检测方向的一些公开数据集以及相关文献。 1 Devign (FFmpegQemu) 简介&am…...
springboot后端开发-常见注解及其用途
文章目录 1. 组件注解2. 依赖注入注解3. 配置类注解4. 测试注解5. 控制器注解6. 安全和认证注解7. 切面相关注解8. API文档相关注解(需引入swagger)9. 其他注解 在Spring Boot框架中,有许多常用的注解用来简化开发过程中的依赖注入、组件扫描、配置、安全控制等方面…...

TypeScript 扩展
扩展 ?:可选参数 可选链事实上并不是TypeScript独有的特性,它是ES11(ES2020)中增加的特性 可选链使用可选链操作符 ? 作用是当对象的属性不存在时,会短路,直接返回undefined,如果存在,那么…...
按键学院往期视频
按键学院第五期 网游实战系列课程 按键学院第四期 网游实战系列课程01-回合制网游的特点:测试游戏后台按键图色 网游实战系列课程02-神武新手任务的识别与处理:字库识别任务 网游实战系列课程03-神武自动组队与攻击 网游实战系列课程04-神武自动逛地图与攻击 网游实战系列课程0…...

通信工程学习:什么是MRF多媒体资源功能、MRFC多媒体资源功能控制、MRFP多媒体资源功能处理
一、MRF多媒体资源功能 MRF(Multimedia Resource Function,多媒体资源功能)是3G/IMS网络中定义的提供多媒体资源功能的网络实体,它为3G/IMS网络的业务和承载提供媒体能力支持。MRF通过提供丰富的媒体处理功能,如播放声…...

【Windows】获取进程缓解策略设置情况
目录 一、前言 二、主要概念 三、实现步骤 四、总结 原文出处链接:[https://blog.csdn.net/qq_59075481/article/details/142234952] 一、前言 在现代操作系统中,进程缓解策略(Process Mitigation Policy)提供了一种防御机制…...

语音识别相关概念
声音如何保存成数字信号? 声音是听觉对声波产生的感知,而声波是一种在时间和振幅上连续的模拟量,本质是介质的振动,,比如空气的振动。那么只需要把这个振动信号记录下来,并用一串数字来表达振动信号振动的…...
Iceberg与SparkSQL查询操作整合
前言 spark操作iceberg之前先要配置spark catalogs,详情参考Iceberg与Spark整合环境配置。 Iceberg使用Apache Spark的DataSourceV2 API来实现数据源和catalog。 使用SQL查询 查询的时候表要按照:catalog.数据库.表名的格式 SELECT * FROM prod.db.table; -- catalog: p…...
Linux 上安装 PostgreSQL
Linux 上安装 PostgreSQL PostgreSQL 是一款功能强大的开源关系数据库管理系统,因其稳定性、可扩展性和先进的功能而广受欢迎。在 Linux 系统上安装 PostgreSQL 是一个相对直接的过程,但具体步骤可能会因您使用的 Linux 发行版而异。本文将介绍在几种流行的 Linux 发行版上安…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互
引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
如何通过git命令查看项目连接的仓库地址?
要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...

Canal环境搭建并实现和ES数据同步
作者:田超凡 日期:2025年6月7日 Canal安装,启动端口11111、8082: 安装canal-deployer服务端: https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...