# 开发安全
开发安全
文章目录
- 开发安全
- 安全开发生命周期
- 安全开发目标
- 安全开发基本准则
- 注入类攻击手段
- 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: …...

家有老人小孩,室内灰尘危害大!资深家政教你选对除尘空气净化器
哈喽,各位亲爱的朋友们!今天我们来聊聊每次大扫除时最让人头疼的问题——灰尘。你有没有发现,两天不打扫,桌子上就能积上一层灰;阳光一照,地板上的灰尘都在跳舞;整理被子的时候,空气…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...

若依登录用户名和密码加密
/*** 获取公钥:前端用来密码加密* return*/GetMapping("/getPublicKey")public RSAUtil.RSAKeyPair getPublicKey() {return RSAUtil.rsaKeyPair();}新建RSAUti.Java package com.ruoyi.common.utils;import org.apache.commons.codec.binary.Base64; im…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...

GraphRAG优化新思路-开源的ROGRAG框架
目前的如微软开源的GraphRAG的工作流程都较为复杂,难以孤立地评估各个组件的贡献,传统的检索方法在处理复杂推理任务时可能不够有效,特别是在需要理解实体间关系或多跳知识的情况下。先说结论,看完后感觉这个框架性能上不会比Grap…...

CTF show 数学不及格
拿到题目先查一下壳,看一下信息 发现是一个ELF文件,64位的 用IDA Pro 64 打开这个文件 然后点击F5进行伪代码转换 可以看到有五个if判断,第一个argc ! 5这个判断并没有起太大作用,主要是下面四个if判断 根据题目…...