# 开发安全
开发安全
文章目录
- 开发安全
- 安全开发生命周期
- 安全开发目标
- 安全开发基本准则
- 注入类攻击手段
- Sql注入
- 命令执行
- 命令执行防御
- 文件遍历
- 防御
- 植入类安全漏洞防御
- XSS(前端漏洞)
- 防御
- 储存型XSS
- 文件上传
- 防御
- CSRF
- 防御
- 会话固定
- 防御
- 其它类型安全漏洞
- 越权访问
- 防御
- 口令爆破
- 安全编码规范
- 输入验证和数据净化
- 业务安全漏洞
- 逻辑漏洞
- 逻辑混淆
- 流程乱序
- 数据重放
- 规避方案
- 第三方安全
- 缓解方案
- 如何安全的开发
- 安全培训
- 安全设计
- 安全编码
- 代码审查
- 安全测试
- 定期更新和补丁
- 访问控制
- 加密
- 事件监控和响应
- 持续改进
- 事件监控和响应
- 持续改进
开发安全是指在软件开发过程中注重安全性,采取措施防止恶意攻击和数据泄露。这包括对代码进行安全审查,使用安全编程实践和工具,以及定期进行安全漏洞扫描和修复。开发安全是确保软件系统在设计和实现阶段考虑到安全性,并且在运行时能够有效地保护系统和数据免受攻击和威胁的过程。
安全开发生命周期
- 需求分析阶段
- 设计阶段:考虑安全方面的设计
- 开发阶段:遵守编码安全规范、自动化测试工具
- 测试阶段:渗透测试
- 部署维护阶段:定期更新修复安全漏洞
安全开发目标
- 保护隐私
- 防止安全攻击漏洞
- 确保系统可用
- 遵守法律
- 维护品牌荣誉
- 节省成本资源
安全开发基本准则
- 安全优先
- 防御性编程:编写健壮的程序,能处理不良输入和异常输出
- …
注入类攻击手段
Sql注入
- 改变
sql
语义
SELECT * FROM users WHERE username = '输入的用户名' AND password = '输入的密码';
# 如果攻击者在用户名字段中输入 ' OR '1'='1 ,那么SQL查询就会变成:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '输入的密码';
SQL
注入:预编译sql
命令执行
- 通过改变输入执行系统命令。调用
cmd
、ping
等
命令执行防御
-
参数化传值,避免拼接用户输入
-
验证、过滤
-
最小权限原则
文件遍历
- 遍历到文件目录扫面文件
防御
- 路径规范化、验证过滤、白名单机制、最小权限规则
- 获取绝对路径
getAbsolutePath()
植入类安全漏洞防御
XSS(前端漏洞)
Web
页面插入恶意JS
、钓鱼实现
防御
- 过滤验证(白名单)、设置
http
头部 - 输出的内容进行编码
- 使用安全的前端框架
储存型XSS
-
储存型
Xss
不会直接将恶意代码响应至前端浏览器进行渲染执行,先存储在数据库等介质中。 -
为了防止储存型
XSS
攻击,开发人员应该对用户输入进行适当的过滤和转义,以防止恶意脚本被存储和执行。最好的做法是采用内容安全策略(CSP
)来限制页面加载的资源和脚本,以及对用户输入进行严格的验证和过滤。这样可以有效地防止储存型XSS
攻击。
文件上传
-
WebShell
脚本文件 -
上传恶意文件,自动执行
-
直接拿下服务器
防御
-
不能仅仅使用前端进行校验,需要在后端校验
-
文件名称校验
-
文件内容校验
-
路径隔离,限制文件的执行权限
CSRF
-
敏感的操作需要考虑
CSRF
攻击 -
跨站请求伪造,受害者已经登陆的状态下
-
常见的盗号、钓鱼页面、钓鱼网站
防御
- 请求带上
token
- 同源检测
会话固定
- 向用户传递一个一致的会话标识,引导用户使用该会话标识进行身份认证
防御
- 随机会话
id
- 会话绑定
- 安全的会话管理
- 双重认证
其它类型安全漏洞
越权访问
- 数据权限问题
防御
- 校验输入
- 权限最小化
- 双重身份认证、强密码多因素
- 关键操作日志,定期审计和监控
口令爆破
- 需要使用强密码
- 密码策略
- 登录失败限制
- 多因素身份认证
- 安全监控
安全编码规范
输入验证和数据净化
- 净化非受信数据(从外界来的数据),比如使用
sql
预编译防止sql
注入问题 - 避免目录遍历漏洞
- 不要记录未净化过的数据,避免产生数据污染
- 文件或者网络
IO
两端使用兼容的编码
业务安全漏洞
逻辑漏洞
逻辑混淆
- 不充分的逻辑设计
- 复杂的业务逻辑
- 修改和维护中的逻辑变更:注释、交接
流程乱序
- 业务流程执行的顺序与预期不符。产生原因有:并发操作
数据重放
- 缺乏合适的身份认证和授权机制
- 不安全的通信协议
规避方案
- 充分的需求和设计,确保程序的逻辑结构清晰,合理,并充分考虑各种肯能的情况和分支
- 逻辑注释和文档
- 代码审查和测试
第三方安全
- 漏洞和脆弱性
- 依赖管理
- 恶意注入和后门
缓解方案
- 审查和评估
- 定期更新
- 依赖管理
- 漏洞披露和响应
- 安全编码实践
如何安全的开发
安全培训
- 确保开发团队接受适当的安全培训,了解常见的安全漏洞和攻击方式,以及如何编写安全代码。
安全设计
- 在软件设计阶段就考虑安全问题,例如通过威胁建模和安全架构评估来识别和减少安全风险。
安全编码
- 遵循安全编码最佳实践,例如输入验证、输出编码、访问控制、错误处理和加密等。
代码审查
- 在代码提交前进行代码审查,以识别和修复安全漏洞。可以使用静态代码分析工具来帮助识别漏洞。
安全测试
- 在开发过程中进行安全测试,包括渗透测试和安全评估,以识别和修复安全漏洞。
定期更新和补丁
- 定期更新和修补软件和系统,以修复已知的安全漏洞和错误。
访问控制
- 实施严格的访问控制策略,限制对敏感数据和系统的访问。
加密
- 使用加密技术保护敏感数据,例如使用 SSL/TLS 加密网络通信,使用加密算法保护存储的数据。
事件监控和响应
- 实施事件监控和响应计划,以识别和响应安全事件。
持续改进
- 定期评估和改进安全实践,以适应新的安全威胁和技术趋势。
总之,提高开发安全需要全面的安全实践,包括安全培训、安全设计、安全编码、代码审查、安全测试、定期更新和补丁、访问控制、加密、事件监控和响应、以及持续改进。
加密
- 使用加密技术保护敏感数据,例如使用 SSL/TLS 加密网络通信,使用加密算法保护存储的数据。
事件监控和响应
- 实施事件监控和响应计划,以识别和响应安全事件。
持续改进
- 定期评估和改进安全实践,以适应新的安全威胁和技术趋势。
总之,提高开发安全需要全面的安全实践,包括安全培训、安全设计、安全编码、代码审查、安全测试、定期更新和补丁、访问控制、加密、事件监控和响应、以及持续改进。
相关文章:
# 开发安全
开发安全 文章目录 开发安全安全开发生命周期安全开发目标安全开发基本准则注入类攻击手段Sql注入命令执行命令执行防御文件遍历防御 植入类安全漏洞防御XSS(前端漏洞)防御 储存型XSS文件上传防御 CSRF防御 会话固定防御 其它类型安全漏洞越权访问防御 口…...

Qt MaintenanceTool.exe使用镜像源更新Qt
环境:Windows11,Qt6.5,新版的MaintenanceTool.exe linux环境类似,mac环境可以看官方文档。 cmd命令窗口:切换到MaintenanceTool.exe所在目录,可以用“D:”切换到D盘,“cd xxxx”切换到xxxx目录…...

Java 8 Stream API介绍
Java 8引入了Stream API,这是对集合框架的一种增强,它允许你以一种声明式的方式处理数据集合。Stream API的核心在于将数据的操作分为两个主要阶段:中间操作和终端操作。中间操作返回的是一个新的Stream,可以链式调用多个中间操作…...

【前端技巧】css篇
利用counter实现计数器 counter-reset:为计数器设置名称,语法如下: counter-rese: <idntifier><integer>第一个参数为变量名称,第二个参数为初始值,默认为0 counter-increment:设置计数器增…...

2024年6月20日 (周四) 叶子游戏新闻
超市播音系统: 定时播放不同音乐 强制卸载软件: 一款强制卸载软件 免费多人沙盒游戏《宝藏世界》推出更新“潮起潮落”,带来全新克苏鲁风冒险准备好迎接一场超凡的冒险吧,MMORPG发行商gamigo宣布《宝藏世界》的最新更新:“潮起潮落”。这次更…...

Zookeeper 一、Zookeeper简介
1.分布式系统定义及面临的问题 分布式系统是同时跨越多给物理主机,独立运行的多个软件所组成的系统。类比一下,分布式系统就是一群人一起干活。人多力量大,每个服务器的算力是有限的,但是通过分布式系统,由n个服务器组…...

普通一本能找到嵌入式linux工作吗?
在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式linux的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!首先,普通…...
Effective C++ 改善程序与设计的55个具体做法笔记与心得 3
三. 资源管理 13. 以对象管理资源 请记住: 为防止资源泄露,使用智能指针 14. 在资源管理类中小心copying行为 请记住: 复制RAII对象必须一并复制他所管理的资源,所以资源的copying行为决定RAII对象的copying行为普遍而常见的…...

苹果的后来者居上策略:靠隐私保护打脸微软
01.苹果与微软相比更注重用户隐私 我一直是Windows的忠实用户,但微软疯狂地将人工智能融入一切,让我开始觉得应该咬咬牙换成Mac。 自小我几乎只用Windows电脑,所以我对MacOS一直不太适应。虽然Windows 11有其缺点,但总的来说&am…...
java经典面试题--进程和线程的关系/区别
进程和线程的定义以及作用 进程:进程是操作系统分配资源的基本单位,是程序的一次执行过程,它包括了程序执行的上下文环境,包括程序代码、数据、系统资源(内存、文件、设备等)以及执行状态等信息,其作用是提供一个独立的执行环境,…...

Solr 日志系统7.4.0部署和迁移到本地,Core Admin 添加新的core报错
文章目录 Solr部署Docker部署二进制部署 Tips:Solr设置账号密码方法1:(不使用)方法2: Core Admin 添加新的core报错Solr数据迁移 Solr部署 Docker部署 docker run -d -p 8983:8983 --name solr solr:latest docker run -d -p 8983:8983 -v /opt/solr:/…...

前缀和+双指针,CF 131F - Present to Mom
一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 131F - Present to Mom 二、解题报告 1、思路分析 很经典的一种把列看作cell 来进行双指针/递推的题型 我们考虑,可以预处理出原矩阵中的所有star 然后我们去枚举矩形的上下边界,把…...

HCIA-速查-ENSP模拟器2步清空配置
需求:清空模拟器配置 清空当前图中配置 步骤1:reset saved-configuration 后输入y确认 步骤2:reboot后输入n否认再输入y确认 验证已经清空配置...

优选算法刷题笔记 2024.6.10-24.6.20
一、双指针算法(快慢指针,对撞指针) 艹,CSDN吞了我是十三题笔记!!! 二、滑动窗口(滑动窗口) 1、找到字符串中所有字母异位词 class Solution {public List<Integer> findAnagrams(String s, String p) {int[] hash1 new in…...

无需科学上网:轻松实现国内使用Coze.com平台自己创建的Bot(如何实现国内免费使用GPT-4o/Gemini等最新大模型)
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 如何在国内使用 Coze.com 创建的 Bot 📒📝 创建Bot📝 实现国内使用📝 测试⚓️ 相关链接 ⚓️📖 介绍 📖 Coze.com 是一个强大的平台,允许用户创建各种类型的 Bot。然而,许多国内用户可能会遇到访问问题,导致无法…...

【车载开发系列】CAN通信总线再理解(中篇)
【车载开发系列】CAN通信总线再理解(中篇) 九. CAN总线标准十. CAN物理层十一. CAN数据链路层1)CAN的通信帧类型2)CAN的标准帧格式1. CAN ID2. 数据场 3)CAN总线仲裁 十二. CAN应用层1)CANopen2)…...
系统编程:互斥锁,条件变量
互斥锁 使用过程: 1,声明锁: pthread_mutex_t lock; 2,初始化锁:pthread_mutex_init(&lock,NULL); 3,在线程的方法函数中上锁和解锁:(成对出现) pthread_mutex_lock(&lock); pthread_mutex_unlock(&lock); 4,销毁锁:pthread_mutex_destroy(&lock); 代码示例:…...

蓝鹏测控公司全长直线度算法项目多部门现场组织验收
关键字:全场直线度算法,直线度测量仪,直线度检测,直线度测量设备, 6月18日上午,蓝鹏测控公司全长直线度算法项目顺利通过多部门现场验收。该项目由公司技术部、开发部、生产部等多个部门共同参与,旨在提高直线度测量精度,满足高精度制造领域需…...
使用Python进行音频处理
通常会使用wave模块。但是,如果您想要处理其他类型的音频文件,或者需要更高级的音频处理功能,您可能需要安装第三方库,如pydub、soundfile、numpy等。 import wave # 读取WAV文件 with wave.open(input.wav, rb) as wav_file: …...

家有老人小孩,室内灰尘危害大!资深家政教你选对除尘空气净化器
哈喽,各位亲爱的朋友们!今天我们来聊聊每次大扫除时最让人头疼的问题——灰尘。你有没有发现,两天不打扫,桌子上就能积上一层灰;阳光一照,地板上的灰尘都在跳舞;整理被子的时候,空气…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...

在Zenodo下载文件 用到googlecolab googledrive
方法:Figshare/Zenodo上的数据/文件下载不下来?尝试利用Google Colab :https://zhuanlan.zhihu.com/p/1898503078782674027 参考: 通过Colab&谷歌云下载Figshare数据,超级实用!!࿰…...