软件安全开发

开发背景

软件工程方法:

方法:抽象化、建模、设计、算法、协议

过程:过程的质量、进度、成本、配置

工具:程序设计语言、编译、配置工具

开发模型

瀑布模型

迭代模型

增量模型

原型

螺旋模型

净室模型---范围小,逻辑明确,等级高的项目,军工项目

软件安全漏洞问题-软件缺陷密度

千行代码缺陷路KLOC---普通软件4-40,高管理软件2-4,美国NAS软件0.1

     例,1000行代码1个缺陷,缺陷率为1。1000行代码10个缺陷,缺陷率为10。

漏洞数量

软件安全目标:可信赖性,可预见性,可遵循性

软件安全思想:风险管理,全生命周期思想,提前介入

软件安全开发模型:SDL,CMMI,SAMM,BSIMM,CLASP

SDL---阶段和活动

        软安全开发生命阶段:开发7阶段,安全措施17项必需的安全活动

CMMI---能力成熟度模型

      Capability Maturity Model Integration--五级

     

SAMM---软件保证成熟度模型

     Software Assurance Maturity Mode 开放框架,基于V字模型

     治理、构造、验证、部署;通用性比较强

    

BSIMM--BSI成熟度模型

Building Security IN使安全成为软件开发必须的部分

软件安全三根支柱:风险管理,接触点,安全知识

BSIMM是对软件安全的活动进行量化,提出12个维度要求。

CLASP应用安全过程

Comprehensive Lightweight Application Security Process

用于构建轻量级过程,包括30个特定活动和辅助资源。

安全需求与设计

合规性是基础,人的安全是核心

考虑要全面,不能仅考虑安全方面,要求考虑刚性需求,注意悖论需求,去除伪需求

安全设计:概要设计,详细设计

设计原则:

最小特权,权限分类,最少共享,完全中立,心理可接受原则,

故障默认处理原则,经济机制原则,保护最薄弱环节,公开设计原则,隐私保护原则,

攻击面最小化原则,不信任原则,纵深防御原则,可追溯性原则。

降低攻击面

概念:取消不需要的功能,增加对功能的安全防护

步骤:分析软件功能特性及重要性,分析从哪里访问和操作,降低访问权限和增强安全措施

策略:等级低攻击面大取消功能,等级中攻击面大需要配置后才开启,等级高攻击面大关闭或限制接口增加安全保证措施或技术。

威胁建模

概念:了解安全威胁

流程:确定对象,识别威胁,评估威胁,消减威胁

威胁要素:源头,动机,方式,对象,频率

威胁分类:基于S-T-R-I-D-E的威胁建模方法。

     S-欺骗;T-篡改;R-抵赖;I-信息泄露;D-拒绝服务;E-权限提升

安全编码与测试

编码安全

程序外部输入安全

要求:所有输入数据检查、验证及过滤

原则:不信任原则

验证时间:首次,缓存过期

来源:命令行、环境变量、文件、网络

验证要素:

数据,参数,向量,地址,文件,

命令,协议,语法,长度,格式

类型,约束,语义,规则,自定义。

程序内部安全

内部接口验证

异常的安全处理---检测异常,默认故障保护机制,必要时立即拒绝不会送详细错误代码

最小化反馈

避免竞争死锁

安全调用组件

软件调用组件:操作系统,数据库,可重用的库,网络服务(WEB/DNS),其他

使用经过认可的组件

严格检查参数

正确处理返回值--错误码统一规划和设计

保护调用传递的数据--密码算法,传输协议SSH

不安全函数使用

禁止使用危险函数,比如gets,sprintf,strcat等

软件编译安全

编译环境安全

编译工具安全

程序代码审核

        方式:审核有针对性,人工审核+工具审核

       代码分析工具:安全性,多层性,可扩展性,知识性,继承性

       商业工具, 免费开源工具

软件测试

概念:测试计划,方案,用例,工具,证据,报告,覆盖,深度

测试信条:预期测试的测试结果是预先确定的;好的用例发现错误概率高;测试独立于编码,需要具备应用及软件两方面专业知识,测试人员使用不同于开发人员的工具,只检查常见的测试不行,测试文档要能够在利用。

测试方法:

过程:单元测试,集成测试,系统测试

输入信息测试:黑盒,白盒,灰盒

状态测试:静态测试,动态测试

输入条件测试:正常测试,异常测试

基于源码测试:代码评审、代码审查、代码走查

基于闭环思想:回归测试

基于项目测试:验收测试,压力测试,性能测试,基线测试

基于安全测试:模式测试(大量畸形数据),渗透测试(模拟攻击)

安全验收与交付

供应链安全-----开源问题,知识产权,自主可控,网络环境,开发人员

   策略---软件生态链的构建,加强软件开发自主可控的能力,可靠的编译软件获取方式,官方渠道发布验证

   知识产权、开发工具、编译器、开发人员、开源代码

  交付安全:数字签名、版本控制、Lisence控制、管理手册、使用手册、安全手册

  运行维护:安全管理体系、安全措施、安全测量、应急响应、连续性、灾备

安全验收:

正式验收流程

制定软件验收标准

安全纳入到验收考虑中

安全部署:

提供软件文档

软件部署工具

软件补丁加固

软件配置维护

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/298541.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Adobe illustrator各版本安装指南

下载链接 https://pan.baidu.com/s/11sTpMUbQEXhyjpkBlixcLg?pwd0531 #2024版 1.鼠标右击【Ai2024(64bit)】压缩包(win11及以上系统需先点击“显示更多选项”)【解压到 Ai2024(64bit)】。 2.打开解压后的文件夹,鼠标右击【Setup】选择【以…

配置cendos 安装docker 配置阿里云国内加速

由于我安装的cendos是镜像版。已经被配置好了。所以只需要更新相关配置信息即可。 输入 yum update自动更新所有配置 更新完成后输入 yum list docker-ce --showduplicates | sort -r 自动查询所有可用的docker版本 输入 yum install docker-ce docker-ce-cli container…

[MAUI]在.NET MAUI中调用拨号界面

在.NET MAUI中调用拨号界面 前置要求: Visual Studio 2022 安装包“.NET Multi-platform App UI 开发” 参考文档: 电话拨号程序 新建一个MAUI项目 在解决方案资源管理器窗口中找到Platforms/Android/AndroidManifest.xml在AndroidManifest.xml中添加下文中…块如下:<?xml…

前端uniapp的tab选项卡for循环切换、开通VIP实战案例【带源码/最新】

目录 效果图图1图2 源码最后 这个案例是uniapp&#xff0c;同样也适用Vue项目&#xff0c;语法一样for循环&#xff0c;点击切换 效果图 图1 图2 源码 直接代码复制查看效果 <template><view class"my-helper-service-pass"><view class"tab…

学习笔记——C++中的循环结构 while语句

while循环语句 作用&#xff1a;满足循环条件&#xff0c;执行循环语句 语法&#xff1a;while&#xff08;循环条件&#xff09;{循环语句} 解释&#xff1a;只要循环条件的结果为真&#xff0c;就执行循环语句 以打印0-9这十个数字为例&#xff0c;特别需要注意的是&…

2.3_7 生产者-消费者问题

2.3_7 生产者-消费者问题 系统中有一组生产者进程和一组消费者进程,生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用。(注:这里的“产品”理解为某种数据) 生产者、消费者共享一个初始为空、大小为n的缓冲区。 只有缓冲区没满时,生产者才…

C# Emgu.CV4.8.0读取rtsp流分段保存

【官方框架地址】 https://github.com/emgucv/emgucv 【算法介绍】 EMGU CV&#xff08;Emgu Computer Vision&#xff09;是一个开源的、基于.NET框架的计算机视觉库&#xff0c;它提供了对OpenCV&#xff08;开源计算机视觉库&#xff09;的封装。EMGU CV使得在.NET应用程序…

基于SSM的网上购物平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

小游戏实战丨基于Tkinter的五子棋小游戏

文章目录 写在前面Tkinter五子棋系列文章写在后面 写在前面 本期内容&#xff1a;基于tkinter的五子棋小游戏 下载地址&#xff1a;https://download.csdn.net/download/m0_68111267/88700190 实验环境 python3.11及以上pycharmtkinter Tkinter Tkinter是Python的一个标准…

useContext

可以跨组件传值 其实主要的就是三步 1、const xxx React.createContext();创建一个context 2、<xxx.Provider value{{ num, setNum }}>父组件设置要传递的值 3、const { num, setNum } React.useContext(xxx);子组件下使用 特点&#xff1a; 1、可以有多个xxx.Pr…

2024.1.5 关于 二叉平衡树(AVL 树)详解

目录 二叉搜索树 二叉搜索树的简介 二叉搜索树的查找 二叉搜索树的效率 AVL树 AVL 树的简介 AVL 树的实现 AVL树的旋转 右单旋 左单旋 左右双旋 右左双旋 完整 AVL树插入代码 验证 AVL 树 AVL 树的性能 二叉搜索树 要想了解关于二叉平衡树的相关知识&#xff0c;了…

RocketMQ详细介绍及核心问题解释(很全)

1. RocketMq是什么 一个纯Java、分布式队列模型的消息中间件&#xff0c;具有高可用、高可靠、高实时、低延迟的特点。&#xff08;记住这句就行了&#xff09; 2. RocketMq有什么功能 1、业务解耦&#xff1a;这也是发布订阅的消息模型。生产者发送指令到MQ中&#xff0c;然…

三英战吕布web3游戏项目启动全流程

项目是一个学习相关的很好的例子并且开源&#xff0c;原本的项目是连接goerli网络&#xff0c;但我把它修改为可连接ganache网络的项目了&#xff0c;更方便启动。 智能合约部分 进入文件 hardhat.config.js &#xff0c;增加一个钱包私钥 2.执行npm install 3.测试合约 npx ha…

DevSecOps 工具:初学者指南

DevSecOps 是开发、安全和运营的融合&#xff0c;标志着软件开发的范式转变&#xff0c;在整个软件开发生命周期 (SDLC)中无缝集成安全性。 这种方法标志着不再将安全视为开发过程中的一个阶段。除了DevSecOps 的核心原则和最佳实践之外&#xff0c;特定工具也是实施和强化安全…

VMware Workstation——快照

目录 一、为什么要使用快照 二、拍摄快照 三、快照管理 1、克隆 2、转到 ​3、删除 一、为什么要使用快照 VMware虚拟机的快照是一个很重要的功能。 简单点说它相当于某个时刻虚拟的备份&#xff0c;并且可以快速还原至原来的状态。但是它和备份还是有区别的。 【快照…

代码快递员:extern如何送达静态变量至各文件目的地

各位少年&#xff0c;大家好&#xff0c;我是博主那一脸阳光。 前言&#xff1a;话说有一天&#xff0c;静态变量先生和extern女士一起去参加编程界的武林大会。静态变量先生自豪地说&#xff1a;“你知道我为什么这么受欢迎吗&#xff1f;因为我可是个低调的富翁&#xff0c;我…

SpringBoot 如何 配置端口号

结论 server:port: 8088演示 [Ref] 快速构建SpringBoot项目

简单工厂模式、工厂方法、抽象工厂模式

下面例子中鼠标&#xff0c;键盘&#xff0c;耳麦为产品&#xff0c;惠普&#xff0c;戴尔为工厂。 简单工厂模式 简单工厂模式不是 23 种里的一种&#xff0c;简而言之&#xff0c;就是有一个专门生产某个产品的类。 比如下图中的鼠标工厂&#xff0c;专业生产鼠标&#xf…

每天刷两道题——第七天+第八天

力扣官网 1.1移动零 给定一个数组 n u m s nums nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序&#xff0c;在不复制数组的情况下原地对数组进行操作。 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 代码 def moveZeroea…