网络安全练气篇——OWASP TOP 10
1、什么是OWASP?
OWASP(开放式Web应用程序安全项目)是一个开放的社区,由非营利组织 OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放,旨在提高对应用程序安全性的认识。
其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结并更新Web应用程序中最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。
最重要的版本
应用程序中最严重的十大风险
2、TOP 10 分别是哪些?
1. SQL注入
攻击方式
通过恶意字符将恶意代码写入数据库,使其运行,产生敏感数据泄露,数据库读取,进一步在数据库执行命令
攻击类型
- 未审计的数据框架
- 直接使用网址URL直接传递变量
- 未过滤的特殊字符串
- SQL错误回显
- SQL注入
- 获取敏感信息进一步在服务器执行命令,实现接管服务器的目的
防护措施
- 关闭SQL错误回显
- 对输入的字符做转译处理
- 对前端输入做白名单验证(长度,类型)
- 使用一个成熟的WAF
- 白盒审计(代码审计)
- SQL服务运行于专门的账号,并给予最小权限
2. 失效的身份认证
攻击方式
攻击者利用网站中身份认证缺陷,以此来获取高权限,攻击服务器
攻击类型
- 弱口令
- 盗用身份和账号
- 修改网络数据包以此获取用户账号权限
- 网站设计不良,可以绕过登录页面
- 设计者忘记设置注销登录,使之有机可乘
防护措施
- 网站的登录页面就使用加密连接
- 网站应该具体良好的权限控制与管理
- 网站应该具备超时注销机制
3. 敏感数据泄露
攻击方式
通过扫描发现应用程序有敏感信息
攻击类型
- 应用人员或者开发人员无意间上传敏感数据到Github,导致网站文件泄露
- 敏感数据文件设置错误,导致数据库备份文件泄露
防护措施
- 对于github泄露,定期对仓库进行扫描
- 对网站应用目录定期扫描
4. XML外部实体(XXE)
攻击方式
当应用程序解析XML文件时包含了对外部实体的的引用,通过构造恶意的XML代码,读取指定的服务器数据或资源。
攻击类型
- 读取服务器的数据或者资源 /etc/password
- 读取应用程序源码
防护措施
- 关闭DTD
- 禁止外部实体引入
5. 失效的访问控制
攻击方式
没有校验身份,直接导致攻击者绕过权限直接访问
攻击类型
- 绕过路径,如未读取的参数进行检查,导致路径绕过并进行读取敏感文件操作
- 权限提升,如未对权限进行检查,导致攻击者变更权限
- 垂直越权,导致攻击者可以从普通用户权限提升到管理员的用户权限
- 水平越权,导致攻击者可以从用户a的权限提升到用户b的权限
防护措施
- 对参数的白名单做过滤
- 对权限的控制管理重新设计与限制 最小权限
- 限制下载文件的类型
6. 安全配置错误
攻击方式
攻击者利用错误的配置,访问敏感信息或者提升权限
目录遍历
攻击类型
- 开发或者维护人员设置了错误的配置,如 python 开发中对于 Django 框架在生产环境启用了 Debug 模式
- 目录遍历
防护措施
- 检查文件扩展名
- 重命名上传文件
- 控制上传文件的权限,如关闭权限
- 移除不常用的页面,如安装目录文件
- 移除临时文件,备份文件
- 不使用常用的、简单的命名规则,防止被猜测
- 定义白名单
7. 跨站脚本(XSS)
攻击方式
攻击者使用恶意字符嵌入应用程序代码中并运行,盗取应用程序数据
攻击类型
- 存储型XSS
- DOM型XSS
- 反射型XSS
防护措施
- 验证输入/接收的字符,过滤或者替换非法字符
- 使用白名单机制
8. 不安全的反序列化
攻击方式
攻击者利用应用程序反序列化功能,构造恶意的反序列化对象攻击应用程序
攻击类型
- 远程代码执行RCE
- 注入攻击
- 越权
- 远程命令执行
防护措施
- 对数据对象签名,并作完整检查
- 数据对象中的数据做严格的类型检查,限制一部分恶意攻击
- 隔离反序列化操作环境,对序列化和反序列化进行白名单验证
- 在执行反序列化之前,对用户输入数据执行验证和过滤
9. 使用含有已知漏洞的组件
攻击方式
使用应用程序中的框架、库、组件、工具等已知漏洞攻击,获取高权限或者敏感数据
攻击类型
- 敏感信息泄露
- 提升权限
- 远程代码执行
- SQL注入
- 反序列化
- 配置错误
防护措施
- 及时更新、修复组件漏洞
- 移除不再使用的依赖组件
10. 不足的日志记录和监控
攻击方式
对于日志记录的监控不足,导致攻击者攻击系统、应用、盗取数据等操作无法被及时发现和追查
攻击类型
- 日志不规范
- 监控告警不及时
- 日志分析于人员技能缺失
防护措施
- 规范化的日志设置,提供清晰易读的操作手册,以便于后期阅读和维护
- 优化监控策略和报警流程,建立完善的规则库,以便于触发相关告警,及时通知相关人员处理
- 加强人才培训和引进专业人才,安全意识培训,聘请专业经验丰富的加入团队,提高水平
相关文章:
网络安全练气篇——OWASP TOP 10
1、什么是OWASP? OWASP(开放式Web应用程序安全项目)是一个开放的社区,由非营利组织 OWASP基金会支持的项目。对所有致力于改进应用程序安全的人士开放,旨在提高对应用程序安全性的认识。 其最具权威的就是“10项最严重…...
python实现进度条的方法和实现代码
在Python中,有多种方式可以实现进度条。这里,我将介绍七种常见的方法:使用tqdm(这是一个外部库,非常流行且易于使用)、rich、click、progressbar2等库以及纯Python的print函数与time库来模拟进度条。 目录…...

被拷打已老实!面试官问我 #{} 和 ${} 的区别是什么?
引言:在使用 MyBatis 进行数据库操作时,#{} 和 ${} 的区别是面试中常见的问题,对理解如何在 MyBatis 中安全有效地处理 SQL 语句至关重要。正确使用这两种占位符不仅影响应用的安全性,还涉及到性能优化。 题目 被拷打已老实&…...
C# —— while循环语句
作用 让顺序执行的代码 可以停下来 循环执行某一代码块 // 条件分支语句: 让代码产生分支 进行执行 // 循环语句 : 让代码可以重复执行 语法 while循环 while (bool值) { 循环体(条件满足时执行的代码块) …...
力扣第205题“同构字符串”
在本篇文章中,我们将详细解读力扣第205题“同构字符串”。通过学习本篇文章,读者将掌握如何使用哈希表来解决这一问题,并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释,以便于理解。 问题描述 力扣第205题“…...
探索RESTful API开发,构建可扩展的Web服务
介绍 当我们浏览网页、使用手机应用或与各种互联网服务交互时,我们经常听到一个术语:“RESTful API”。它听起来很高深,但实际上,它是构建现代网络应用程序所不可或缺的基础。 什么是RESTful API? 让我们将RESTful …...
苹果安卓网页的H5封装成App的应用和原生开发的应用有什么不一样?
H5封装类成App的应用和原生应用有什么不一样?——一对比谈优缺点 1. 开发速度和复用性 H5封装的App优势:一次编写,多平台运行。你只需要使用一种语言编写代码,就可以发布到不同的平台,降低开发成本。 原生应用优势&…...

IO流2.
字符流-->字符流的底层其实就是字节流 public class Stream {public static void main(String[] args) throws IOException {//1.创建对象并关联本地文件FileReader frnew FileReader("abc\\a.txt");//2.读取资源read()int ch;while((chfr.read())!-1){System.out…...

详解MySQL中的PERCENT_RANK函数
目录 1. 引入1. 基本使用2:分组使用3:处理重复值4. 使用优势4.1 手动计算百分等级4.2 使用 PERCENT_RANK 的优势4.3 使用 PERCENT_RANK 5. 总结 在 MySQL 中,PERCENT_RANK 函数用于计算一个值在其分组中的百分等级。 它的返回值范围是从 0 …...
宏任务与微任务
一、宏任务 1、概念 指消息队列中等地被主线程执行的事件 2、种类 script主代码块、setTimeout 、setInterval 、nodejs的setImmediate 、MessageChannel(react的fiber用到)、postMessage、网络I/O、文件I/O、用户交互的回调等事件、UI渲染事件&#x…...

昇思大模型学习·第一天
mindspore快速入门回顾 导入mindspore包 处理数据集 下载mnist数据集进行数据集预处理 MnistDataset()方法train_dataset.get_col_names() 打印列名信息使用create_tuple_iterator 或create_dict_iterator对数据集进行迭代访问 网络构建 mindspore.nn: 构建所有网络的基类用…...
python调用chatgpt
简单写了一下关于文本生成接口的调用,其余更多的调用方法可在官网查看 import os from dotenv import load_dotenv, find_dotenv from openai import OpenAI import httpxdef gpt_config():# 为了安全起见,将key写到当前项目根目录下的.env文件中# find…...

YOLOV8 目标检测:训练自定义数据集
1、下载 yolov8项目:ultralytics/ultralytics:新增 - PyTorch 中的 YOLOv8 🚀 > ONNX > OpenVINO > CoreML > TFLite --- ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreM…...
动态更新自建的Redis连接池连接数量
/*** 定时更新Redis连接池信息,防止资源让费*/private static final ScheduledThreadPoolExecutor DYNAMICALLY_UPDATE_REDIS_POOL_THREAD new ScheduledThreadPoolExecutor(1, new ThreadFactory() {Overridepublic Thread newThread(Runnable r) {Thread thread …...

浅谈设计师的设计地位
在当今这个创意无限的时代,设计师的地位日益凸显。他们以独特的视角和精湛的技能,为我们的生活带来了无尽的色彩与灵感。然而,随着行业的不断发展,设计师如何在众多同行中脱颖而出,提升自己的设计地位呢?答…...

C/C++ string模拟实现
1.模拟准备 1.1因为是模拟string,防止与库发生冲突,所以需要命名空间namespace隔离一下,我们来看一下基本内容 namespace yx {class string{private://char _buff[16]; lunix下小于16字节就存buff里char* _str;size_t _size;size_t _capac…...
微信小程序学习(八):behaviors代码复用
小程序的 behaviors 方法是一种代码复用的方式,可以将一些通用的逻辑和方法提取出来,然后在多个组件中复用,从而减少代码冗余,提高代码的可维护性。 如果需要 behavior 复用代码,需要使用 Behavior() 方法,…...
【The design pattern of Attribute-Based Dynamic Routing Pattern (ADRP)】
In ASP.NET Core, routing is one of the core functionalities that maps HTTP requests to the corresponding controller actions. While “Route-Driven Design Pattern” is a coined name for a design pattern, we can construct a routing-centric design pattern base…...

2713. 矩阵中严格递增的单元格数
题目 给定一个 m x n 的整数矩阵 mat,我们需要找出从某个单元格出发可以访问的最大单元格数量。移动规则是可以从当前单元格移动到同一行或同一列的任何其他单元格,但目标单元格的值必须严格大于当前单元格的值。需要返回最大可访问的单元格数量。 示例…...
git创建子模块
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。 现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。 Git …...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...