9.4 安全软件开发
安全不是上线前最后跑一次扫描。安全软件开发要求团队在需求、设计、实现、测试、发布和运维中持续减少攻击面。
攻击者不会按你的用户手册操作,所以工程师必须从“系统可能怎样被滥用”来思考。
正在加载交互实验...
正在加载概念检查...
常见 Web 风险
SQL 注入来自把用户输入拼接进查询。基本防线是参数化查询、最小权限数据库账号和输入验证。
XSS 来自把不可信内容当作页面脚本执行。基本防线是输出转义、内容安全策略、避免危险 HTML 注入。
CSRF 利用用户已登录状态发起非预期请求。基本防线包括 CSRF token、SameSite Cookie、关键操作二次确认。
越权访问来自“用户能看到或操作不属于自己的资源”。基本防线是服务端权限检查、对象级授权、审计和最小权限。
前端校验有助于体验,但不能替代服务端安全控制。
威胁建模
威胁建模不是复杂文档,它从几个问题开始:
- 我们保护什么资产?
- 谁可能攻击?
- 攻击入口在哪里?
- 信任边界在哪里?
- 哪些控制能预防、检测或恢复?
正在加载概念检查...
安全是工程取舍
安全控制也有成本。更强认证可能增加摩擦;更严格输入限制可能影响可用性;更详细日志可能带来隐私风险。因此安全设计也需要明确取舍和证据。
一个实用安全流程包括:
- 需求阶段识别敏感资产。
- 设计阶段做轻量威胁建模。
- 实现阶段使用安全默认库和编码规范。
- 测试阶段覆盖滥用路径。
- 发布阶段扫描依赖和配置。
- 运行阶段监控异常行为并准备响应。
安全不是恐惧文化,而是保护用户和团队信任的工程纪律。
正在加载本节练习...