OSG10 · Chapter 20 · Software Development Security

第20章 软件开发安全

左侧是英文原文摘录、中文直译、小白解释和考点提醒;右侧是对应画报。手机端会先显示画报,点击图片可放大查看。

11 个主题区 88 张四格精读卡 11 张可点击画报 覆盖 SDLC、安全编码、开发模型、成熟度模型、变更配置、DevSecOps、API、测试、代码仓库、第三方软件和数据库安全
主题 01

软件开发安全总览:安全贯穿 SDLC

第 20 章把安全嵌入软件开发生命周期。安全不是上线前补丁,而是从需求、设计、编码、测试、部署到维护全过程都要持续考虑。

章节主线

英文原文摘录

Software Development Security.

中文直译

软件开发安全。

小白解释

本章关注如何在开发活动里提前设计安全,而不是上线后靠运维补救。

考点提醒

Domain 8 是 CISSP 软件安全核心领域。

全生命周期

英文原文摘录

Security should be a consideration at every stage.

中文直译

安全应在每个阶段被考虑。

小白解释

需求、设计、编码、测试、部署、维护都要有安全活动。

考点提醒

Early security involvement 是正确方向。

越早越便宜

英文原文摘录

It is easier to address issues early.

中文直译

越早处理问题越容易。

小白解释

需求阶段修一个安全设计问题,比生产环境修漏洞成本低得多。

考点提醒

Shift-left security 的考试直觉。

系统开发控制

英文原文摘录

Integrate security into the development life cycle.

中文直译

将安全集成到开发生命周期。

小白解释

开发过程要有组织、有方法、有审查,而不是自由发挥。

考点提醒

Formalized SDLC supports secure systems。

生态组件

英文原文摘录

Controls apply to software development ecosystems.

中文直译

控制适用于软件开发生态系统。

小白解释

语言、库、IDE、运行时、CI/CD、仓库、API 都可能带来风险。

考点提醒

考试会从生态组件角度问风险。

安全影响评估

英文原文摘录

Assess the security impact of acquired software.

中文直译

评估采购软件的安全影响。

小白解释

不是自己写的软件也要做风险评估、配置和测试。

考点提醒

COTS、OSS、SaaS 都不能免评估。

日志与审计

英文原文摘录

Auditing and logging of changes.

中文直译

对变更进行审计和日志记录。

小白解释

代码和配置变更必须可追踪,便于调查和回滚。

考点提醒

Change logging mitigates risk。

安全编码

英文原文摘录

Define secure coding guidelines and standards.

中文直译

定义安全编码指南和标准。

小白解释

输入验证、错误处理、API 安全、失败安全都是本章重点。

考点提醒

Secure coding 不只是程序员细节,也是治理要求。

软件开发安全总览画报,点击可全屏查看。
主题 02

开发生态组件:语言、库、IDE 与运行时

软件不是孤立代码。编程语言、共享库、IDE、插件和运行时环境都会影响安全,尤其是第三方库漏洞和 API Key 泄露等供应链风险。

编程语言

英文原文摘录

Developers use programming languages.

中文直译

开发人员使用编程语言。

小白解释

机器语言、汇编、高级语言、解释型语言和编译型语言都有不同安全取舍。

考点提醒

Compiled vs interpreted code 的优缺点要会。

编译代码

英文原文摘录

Compiled code hides source instructions.

中文直译

编译代码隐藏源指令。

小白解释

最终用户不容易看到源码,但恶意逻辑也可能藏在不可见代码里。

考点提醒

Compiled code may hide flaws from end users。

解释代码

英文原文摘录

Interpreted code exposes source code.

中文直译

解释型代码暴露源代码。

小白解释

用户可查看源代码,但接触软件的人也可能修改它。

考点提醒

Interpreted code has visibility and tampering tradeoffs。

运行时

英文原文摘录

Some languages rely on runtime environments.

中文直译

某些语言依赖运行时环境。

小白解释

JVM、.NET、Node 等运行时要保持补丁、权限和配置安全。

考点提醒

Runtime vulnerability affects applications using it。

共享库

英文原文摘录

Libraries contain reusable code.

中文直译

库包含可复用代码。

小白解释

库能提高效率,但库漏洞会被许多应用继承。

考点提醒

Heartbleed/OpenSSL 是共享库风险经典例子。

库来源

英文原文摘录

Know the origins of shared code.

中文直译

了解共享代码来源。

小白解释

要追踪库来源、版本、许可证、维护状态和安全公告。

考点提醒

Software composition awareness 是供应链安全基础。

IDE

英文原文摘录

IDEs provide a single development environment.

中文直译

IDE 提供统一开发环境。

小白解释

IDE 插件、调试器、编译器和配置也可能影响安全。

考点提醒

Tool set security matters。

工具可靠性

英文原文摘录

Tool sets reduce program change errors.

中文直译

工具集可减少程序变更错误。

小白解释

标准化工具链能降低人为错误,但自身也要受控。

考点提醒

工具链属于 development ecosystem。

开发生态组件安全画报,点击可全屏查看。
主题 03

安全编码:输入、会话、错误处理与失败安全

安全编码的基础是不要相信输入,妥善管理会话,避免错误信息泄露敏感细节,并在失败时进入安全状态。

输入验证

英文原文摘录

Input validation checks user input.

中文直译

输入验证检查用户输入。

小白解释

检查类型、长度、范围、格式和允许字符,防止异常输入破坏系统。

考点提醒

Input validation 是防注入和 XSS 的基础。

输出编码

英文原文摘录

Encode characters with alternative code.

中文直译

用替代编码处理字符。

小白解释

浏览器显示相同内容,但不会把危险字符当代码执行。

考点提醒

Encoding helps prevent script execution。

客户端可改

英文原文摘录

Browser-side code is subject to manipulation.

中文直译

浏览器端代码可能被用户篡改。

小白解释

不能只靠前端验证,后端也必须验证。

考点提醒

Never trust client-side validation alone。

会话管理

英文原文摘录

Sessions should be securely tracked.

中文直译

会话应被安全跟踪。

小白解释

令牌、Cookie、超时、加密通道和重新认证都要考虑。

考点提醒

Session management transmitted over encrypted channels。

复用认证

英文原文摘录

Integrate with existing authentication systems.

中文直译

集成现有认证系统。

小白解释

自己造认证库容易出错,优先用成熟、受控的身份系统。

考点提醒

Use established authentication systems/libraries。

错误处理

英文原文摘录

Error information helps debugging.

中文直译

错误信息有助于调试。

小白解释

内部日志可以详细,给用户的错误不能泄露表结构、路径和堆栈。

考点提醒

Verbose errors leak information to attackers。

安全日志

英文原文摘录

Log tampering and administrative events.

中文直译

记录篡改和管理事件。

小白解释

状态变化、管理功能、安全配置修改都应写入集中日志。

考点提醒

Application logging supports incident response。

失败安全

英文原文摘录

Fail-secure puts the system into high security.

中文直译

失败安全使系统进入高安全状态。

小白解释

发生不可预测故障时,默认拒绝或关闭风险功能。

考点提醒

Most security environments prefer fail-secure。

安全编码四件事画报,点击可全屏查看。
主题 04

SDLC 阶段:每阶段都有安全交付物

正式 SDLC 把开发活动拆成阶段,每个阶段都有安全输入和交付物。安全需求和控制规范要从早期设计开始,而不是最后测试才补。

共同活动

英文原文摘录

Development processes share common activities.

中文直译

开发过程有共同活动。

小白解释

虽然模型不同,但需求、设计、控制、编码、测试、部署、维护都常见。

考点提醒

理解原则比死背模型名称更重要。

概念定义

英文原文摘录

Create basic security objectives.

中文直译

创建基本安全目标。

小白解释

在概念阶段先明确系统要保护什么、为什么要保护。

考点提醒

Early planning includes security objectives。

功能需求

英文原文摘录

Develop a functional requirements document.

中文直译

形成函数/功能需求文档。

小白解释

把用户需求转换成开发人员可实现的规格。

考点提醒

Functional requirements drive later design。

控制规范

英文原文摘录

Controls are designed from earliest stages.

中文直译

控制从最早阶段开始设计。

小白解释

根据风险分析定义身份、访问、日志、输入验证、加密等安全控制。

考点提醒

Control specifications should be revisited after major design changes。

设计审查

英文原文摘录

Stakeholders approve the software design.

中文直译

利益相关方批准软件设计。

小白解释

设计需要满足业务、用户、安全和运维目标。

考点提醒

Stakeholder blessing precedes coding。

代码走查

英文原文摘录

Schedule code review walk-throughs.

中文直译

安排代码审查走查。

小白解释

开发人员逐模块审查代码,发现缺陷和不符合规范之处。

考点提醒

Code review supports quality and security。

测试/UAT

英文原文摘录

UAT verifies user requirements.

中文直译

UAT 验证用户需求。

小白解释

测试既包括功能测试,也包括安全测试。

考点提醒

Security testing should be part of testing phase。

维护

英文原文摘录

Changes require formal change management.

中文直译

变更需要正式变更管理。

小白解释

上线后仍要补丁、修 Bug、加功能,但不能绕过流程。

考点提醒

Maintenance and change management are SDLC activities。

SDLC 安全活动画报,点击可全屏查看。
主题 05

开发模型:瀑布、螺旋、敏捷与 SAFe

不同开发模型对阶段、反馈、风险和交付节奏的处理不同。CISSP 常考瀑布的顺序性、螺旋的风险和原型、敏捷的变化响应以及 SAFe 的规模化敏捷。

模型选择

英文原文摘录

Choose an SDLC model appropriate for the environment.

中文直译

选择适合环境的 SDLC 模型。

小白解释

安全人员不一定决定模型,但要理解模型如何影响安全控制。

考点提醒

Management approval is an initial SDLC step。

瀑布模型

英文原文摘录

Waterfall uses sequential activities.

中文直译

瀑布使用顺序活动。

小白解释

阶段依次向前推进,传统模型强调计划和阶段性完成。

考点提醒

Waterfall = sequential seven-stage approach。

回退限制

英文原文摘录

Return to previous phase to correct defects.

中文直译

可回到上一阶段纠正缺陷。

小白解释

发现错误时通常只允许有限回退。

考点提醒

瀑布不擅长快速变化需求。

螺旋模型

英文原文摘录

Each loop develops a prototype.

中文直译

每个循环开发一个原型。

小白解释

反复风险分析、原型、评估,逐步逼近最终系统。

考点提醒

Spiral = iterative risk-driven prototypes。

敏捷宣言

英文原文摘录

Working software over comprehensive documentation.

中文直译

可工作的软件胜过详尽文档。

小白解释

敏捷更重视客户协作、变化响应和频繁交付。

考点提醒

Agile 是 philosophy,不是单一方法。

敏捷方法

英文原文摘录

Scrum, Kanban, Lean, RAD, and others.

中文直译

Scrum、Kanban、Lean、RAD 等。

小白解释

这些是实现敏捷哲学的具体框架或方法。

考点提醒

Scrum 常考每日会议和 backlog。

SAFe

英文原文摘录

SAFe scales Agile across multiple teams.

中文直译

SAFe 把敏捷扩展到多个团队。

小白解释

大型组织用它协调多个敏捷团队、发布列车和组合层目标。

考点提醒

SAFe = Scaled Agile Framework。

安全嵌入

英文原文摘录

Security requirements must fit the model.

中文直译

安全需求必须适配模型。

小白解释

瀑布可在阶段门控加入安全,敏捷/DevOps 要把安全自动化进迭代。

考点提醒

模型不同,安全活动方式不同。

软件开发模型画报,点击可全屏查看。
主题 06

成熟度模型:CMM/CMMI、SAMM 与 IDEAL

成熟度模型帮助组织从混乱、临时的开发过程,逐步走向可重复、可定义、可度量、持续改进的过程。SAMM 专门关注软件保障成熟度。

成熟度目的

英文原文摘录

Improve maturity and quality of software processes.

中文直译

改进软件过程成熟度和质量。

小白解释

软件质量很大程度取决于开发过程质量。

考点提醒

Maturity model = evolutionary improvement path。

CMM 初始

英文原文摘录

Initial phase has ad hoc processes.

中文直译

初始阶段流程临时混乱。

小白解释

成功依赖个人英雄,而不是稳定流程。

考点提醒

SW-CMM Level 1 = Initial。

CMM 五级

英文原文摘录

Initial, Repeatable, Defined, Managed, Optimizing.

中文直译

初始、可重复、已定义、已管理、优化。

小白解释

级别越高,过程越标准、可测量、可持续改进。

考点提醒

CMMI Level 4 常叫 Quantitatively Managed。

CMMI 差异

英文原文摘录

CMMI focuses on process integration.

中文直译

CMMI 关注过程集成。

小白解释

CMM 更偏孤立过程,CMMI 更强调整合。

考点提醒

CMM largely superseded by CMMI。

SAMM

英文原文摘录

SAMM helps assess software assurance maturity.

中文直译

SAMM 帮助评估软件保障成熟度。

小白解释

它把安全活动放进开发和维护过程。

考点提醒

SAMM 是 open-source project。

SAMM 五功能

英文原文摘录

Governance, Design, Implementation, Verification, Operations.

中文直译

治理、设计、实现、验证、运营。

小白解释

每个功能下都有安全实践,如威胁评估、安全构建和安全测试。

考点提醒

SAMM business functions 要会识别。

IDEAL

英文原文摘录

IDEAL has five phases.

中文直译

IDEAL 有五个阶段。

小白解释

Initiating、Diagnosing、Establishing、Acting、Learning。

考点提醒

IDEAL 常和 SW-CMM 记忆表一起出现。

项目工具

英文原文摘录

Gantt and PERT support scheduling.

中文直译

Gantt 和 PERT 支持项目调度。

小白解释

Gantt 看时间和任务,PERT 看估算和依赖。

考点提醒

PERT relates estimates and standard deviation。

软件成熟度模型画报,点击可全屏查看。
主题 07

变更管理、配置管理与 DevOps

发布后的软件仍会持续变化。变更管理控制请求、修改和发布;软件配置管理控制版本和配置;DevOps/DevSecOps 则要求安全跟上快速交付节奏。

变更日志

英文原文摘录

Changes should be logged centrally.

中文直译

变更应集中记录。

小白解释

集中变更记录支持审计、调查、排错和分析。

考点提醒

Central repository supports future auditing。

请求控制

英文原文摘录

Request control organizes modification requests.

中文直译

请求控制组织修改请求。

小白解释

用户提出需求,管理者做成本收益,开发者排优先级。

考点提醒

Request control = request framework and prioritization。

变更控制

英文原文摘录

Change control recreates and analyzes issues.

中文直译

变更控制复现并分析问题。

小白解释

开发人员设计和测试修复方案,避免直接改生产。

考点提醒

Change control includes quality restrictions and documentation。

发布控制

英文原文摘录

Release control approves production release.

中文直译

发布控制批准生产发布。

小白解释

发布前要移除调试代码和后门,并做验收测试。

考点提醒

Release control ensures only approved changes reach production。

配置识别

英文原文摘录

Configuration identification documents products.

中文直译

配置识别记录软件产品配置。

小白解释

知道组织里有哪些版本、组件和配置。

考点提醒

SCM has four main components。

配置控制

英文原文摘录

Configuration control manages version changes.

中文直译

配置控制管理版本变化。

小白解释

只能从授权发行版按政策更新。

考点提醒

Unauthorized distributions should not be used。

状态核算

英文原文摘录

Status accounting tracks authorized changes.

中文直译

状态核算跟踪授权变更。

小白解释

记录所有批准的配置变化。

考点提醒

Formalized procedures track changes。

配置审计

英文原文摘录

Configuration audits compare production and records.

中文直译

配置审计比较生产环境和记录。

小白解释

确认实际环境与台账一致,没有未授权配置变化。

考点提醒

Configuration audit detects drift。

变更与配置管理画报,点击可全屏查看。
主题 08

DevSecOps、CI/CD、API 与软件测试

DevOps 把开发、质量和运维整合,DevSecOps 把安全也放进同一条流水线。快速交付需要自动化安全测试、API 保护和职责分离。

DevOps

英文原文摘录

DevOps combines development and operations.

中文直译

DevOps 结合开发和运维。

小白解释

目标是减少团队隔阂,加快开发、测试和部署。

考点提醒

DevOps includes development, QA, and operations。

CI/CD

英文原文摘录

Code may roll out many times per day.

中文直译

代码可能每天发布多次。

小白解释

持续集成/持续交付依赖高度自动化。

考点提醒

CI/CD requires automation and controls。

DevSecOps

英文原文摘录

Security must move with the same agility.

中文直译

安全必须以同样敏捷速度前进。

小白解释

把安全扫描、策略和审查嵌入流水线,而不是另起炉灶。

考点提醒

DevSecOps = development + security + operations。

软件定义安全

英文原文摘录

Security controls are managed by code.

中文直译

安全控制由代码管理。

小白解释

策略、基础设施和安全控制可直接集成到 CI/CD。

考点提醒

Software-defined security supports DevSecOps。

API

英文原文摘录

APIs allow direct service interaction.

中文直译

API 允许直接与服务交互。

小白解释

绕过传统页面,直接调用底层功能。

考点提醒

API security requires per-call authentication and authorization。

API Key

英文原文摘录

API keys are like passwords.

中文直译

API Key 像密码。

小白解释

应安全存储、加密传输、避免进入代码仓库。

考点提醒

泄露 API key 可导致云资源被滥用。

测试设计

英文原文摘录

Design tests as modules are designed.

中文直译

模块设计时就设计测试。

小白解释

测试数据和路径应尽可能覆盖正常、异常、边界和滥用场景。

考点提醒

Use cases + misuse cases。

三种测试哲学

英文原文摘录

White-box, black-box, and gray-box testing.

中文直译

白盒、黑盒和灰盒测试。

小白解释

白盒有源码,黑盒从用户视角,灰盒两者结合但不逐行分析内部。

考点提醒

White-box = source code access。

现代交付流水线安全画报,点击可全屏查看。
主题 09

代码仓库、API Key 与第三方软件风险

代码仓库是协作中心,也是泄露、篡改和供应链风险点。商业软件、开源软件和 SaaS 都要做安全评估、配置审查和供应商管理。

代码仓库

英文原文摘录

Repositories store source code centrally.

中文直译

仓库集中存储源代码。

小白解释

GitHub、Bitbucket、SourceForge 等还提供版本控制、Bug 跟踪和发布管理。

考点提醒

Repository broader than library。

访问控制

英文原文摘录

Control read and write access.

中文直译

控制读写访问。

小白解释

读权限泄露敏感代码,写权限可导致代码被篡改。

考点提醒

Least privilege applies to repositories。

敏感信息

英文原文摘录

Do not include API keys in public repositories.

中文直译

不要把 API Key 放入公共仓库。

小白解释

恶意机器人会秒级扫描公开仓库中的密钥。

考点提醒

API keys, passwords, server names, database names are sensitive。

云账单风险

英文原文摘录

Exposed keys can provision IaaS resources.

中文直译

泄露密钥可创建 IaaS 资源。

小白解释

攻击者可用你的云密钥开服务器,账单算到你的账户上。

考点提醒

API key leakage has financial impact。

COTS

英文原文摘录

Commercial software may run on servers.

中文直译

商业软件可运行在组织服务器上。

小白解释

组织负责安装、配置、补丁和运行环境。

考点提醒

COTS still needs security assessment。

SaaS

英文原文摘录

Software may be delivered over the Internet.

中文直译

软件可能通过互联网交付。

小白解释

SaaS 下很多责任在提供商,但组织仍要理解合同、配置和数据责任。

考点提醒

Shared responsibility applies。

OSS

英文原文摘录

Open-source software may be part of larger systems.

中文直译

开源软件可能是大型系统组件。

小白解释

开源不是天生不安全,但要跟踪版本、漏洞和维护状态。

考点提醒

COTS often incorporates OSS。

SLA

英文原文摘录

SLAs define service levels.

中文直译

SLA 定义服务级别。

小白解释

关键服务、数据库、应用、数据线路都可用 SLA 明确可用性和响应。

考点提醒

SLA supports third-party assurance。

软件供应链与仓库安全画报,点击可全屏查看。
主题 10

关系数据库、SQL 与 ACID

关系数据库由表、行、列和键构成,SQL 提供数据定义、查询和修改能力。事务必须满足 ACID,确保数据在并发和失败场景下保持一致。

数据库类型

英文原文摘录

Relational databases use tables.

中文直译

关系数据库使用表。

小白解释

表由行和列构成,是 RDBMS 的基本结构。

考点提醒

Table also called relation。

英文原文摘录

A primary key uniquely identifies a row.

中文直译

主键唯一标识一行。

小白解释

候选键可唯一标识记录,主键是设计者选定的那个。

考点提醒

Primary key purpose 是常考选择题。

SQL

英文原文摘录

SQL provides a consistent interface.

中文直译

SQL 提供一致接口。

小白解释

用于存储、检索、修改数据和管理数据库结构。

考点提醒

SQL granularity of authorization 是安全特性。

DDL

英文原文摘录

DDL creates and modifies database structure.

中文直译

DDL 创建和修改数据库结构。

小白解释

例如创建表、修改字段、定义索引。

考点提醒

DDL = Data Definition Language。

DML

英文原文摘录

DML manipulates data.

中文直译

DML 操作数据。

小白解释

查询、插入、更新、删除数据属于 DML。

考点提醒

DML = Data Manipulation Language。

规范化

英文原文摘录

Normalization reduces redundancy.

中文直译

规范化减少冗余。

小白解释

按 normal forms 组织表,提升一致性和维护性。

考点提醒

Normalization = bring tables into normal forms。

事务

英文原文摘录

Transactions ensure data integrity.

中文直译

事务确保数据完整性。

小白解释

银行转账必须加钱和扣钱都成功,否则全部回滚。

考点提醒

Commit and rollback are transaction concepts。

ACID

英文原文摘录

Transactions require ACID characteristics.

中文直译

事务需要 ACID 特性。

小白解释

原子性、一致性、隔离性、持久性。

考点提醒

Atomicity, Consistency, Isolation, Durability。

关系数据库 SQL ACID 画报,点击可全屏查看。
主题 11

数据库安全:视图、聚合、推断、分区与多实例

数据库安全不仅是账号权限,还包括多级安全、视图、并发、聚合、推断、分区、多实例、NoSQL 安全模型和专家系统等概念。

多级安全

英文原文摘录

Multilevel databases contain different classifications.

中文直译

多级数据库包含不同密级信息。

小白解释

同一个数据库里可能有公开、机密、秘密等不同级别数据。

考点提醒

Database contamination is a multilevel concern。

视图

英文原文摘录

Views restrict access to attributes and rows.

中文直译

视图限制属性和行访问。

小白解释

用户看到的是 SQL 查询呈现的子集,而不是整张真实表。

考点提醒

Views are stored as SQL commands, not data tables。

并发

英文原文摘录

Concurrency uses locks.

中文直译

并发使用锁。

小白解释

一个用户修改数据时,锁定相关项防止其他用户同时改变。

考点提醒

Locks preserve integrity during simultaneous access。

聚合

英文原文摘录

Aggregation combines lower-level information.

中文直译

聚合组合低级别信息。

小白解释

单项数据不敏感,合在一起可能推导出高敏信息。

考点提醒

Aggregation attack = combine data to reveal sensitive info。

推断

英文原文摘录

Inference combines available information.

中文直译

推断组合可见信息。

小白解释

用户从合法可见数据推理出不该知道的敏感事实。

考点提醒

Inference differs from aggregation but related。

分区

英文原文摘录

Partitioning splits a database into parts.

中文直译

分区把数据库拆成多个部分。

小白解释

按安全需求分割数据,降低聚合和推断风险。

考点提醒

Partitioning can counter inference/aggregation。

多实例

英文原文摘录

Polyinstantiation allows identical keys.

中文直译

多实例允许相同主键记录。

小白解释

不同安全级别用户看到不同版本,避免从缺失记录推断秘密。

考点提醒

Polyinstantiation defends against inference。

NoSQL 与专家系统

英文原文摘录

NoSQL uses nonrelational models.

中文直译

NoSQL 使用非关系模型。

小白解释

键值、文档、图、列族的安全模型可能不同;专家系统由知识库和推理引擎组成。

考点提醒

Expert system = knowledge base + inference engine。

数据库安全高频考点画报,点击可全屏查看。