网络安全练气篇——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 …...
智能检索新范式,让AIAgent自主决策,提升RAG效率100%!
市面上的 RAG 系统,不管叫什么名字,本质上只有两种做法: 第一种,一次性检索。把用户的 query 向量化,从语料库里捞出 Top-K 个文档片段,拼成一个大 prompt 塞给模型。GraphRAG、HippoRAG、LightRAG 都属于…...
51单片机驱动ST7735S彩屏避坑指南:从5秒刷屏到流畅贪吃蛇的优化实战
51单片机驱动ST7735S彩屏性能优化实战:从卡顿到流畅游戏的蜕变之路当一块128x160分辨率的ST7735S彩屏遇上传统的51单片机,这种组合看似矛盾却又充满挑战。许多开发者初次尝试时会发现,原本在STM32等平台上运行流畅的显示驱动,移植…...
苏州创新药20年,站上全球产业洗牌暴风眼
一个城市的创新药产业集群如何从无到有,又如何在全球化临界点寻找自己的位置。文|徐鑫编|任晓渔过去一年多,苏州是全球创新药产业版图中一个绕不过去的城市。大额海外授权交易频繁传出,在中国高端制造走出去的背景下&a…...
2026年,揭秘那些真正安全的原生态食材厂家你不可不知的秘密
随着人们生活水平的提升以及对健康的日益重视,选择真正安全的原生态食材已经成为许多人购买食物的标准。但市场的繁杂使得甄别真正安全的食材厂家变得愈加困难。今天,我将通过几个关键角度,为大家揭秘那些真正安全的原生态食材厂家的秘密&…...
贵阳婚礼西服定制攻略:面料、工艺、版型避坑指南
婚礼西装是男士婚礼造型的核心,区别于日常商务正装,婚礼西服更看重版型精致度、面料质感、上身挺拔感以及镜头适配度。在贵阳备婚的新人,大多会放弃成品西装,选择专属定制服务。但本地婚礼西服定制市场参差不齐,很多新…...
基于可解释机器学习的城市人口流动空间降尺度分析实践
1. 项目概述:从宏观到微观,解码城市脉搏在城市的肌理中,人口的流动如同血液的循环,承载着经济活力、社会互动与空间结构的全部信息。无论是城市规划师优化公交线路,还是商业分析师评估店铺选址,亦或是公共卫…...
如何进行TVA仿真引擎的“光照地狱”训练?
重磅预告:本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容,该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著,特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...
XML 服务器
XML 服务器 引言 XML(可扩展标记语言)服务器在现代互联网技术中扮演着至关重要的角色。它为数据的传输和处理提供了灵活且高效的方式。本文将深入探讨XML服务器的概念、工作原理、应用场景及其在软件开发中的重要性。 什么是XML服务器? XML服务器是一种用于存储、处理和…...
skills CANN开源社区贡献技能包开发指南
前言 开源社区的健康运转,不仅依赖核心代码的贡献,还需要降低贡献门槛、提供清晰的指南和自动化工具。skills仓库是CANN开源社区的"贡献技能包",提供了一系列辅助脚本、代码模板、CI检查和文档生成工具,帮助新手快速上…...
股票买卖最佳时机:LeetCode121题解
题目LeetCode121给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取…...
