开发安全生命周期

为什么需要应用开发安全管理

      今天的互联网经济中,尤其对于金融、运营商、电子商务等企业,软件应用不光承载着其核心业务,同时还生成、处理、存储着各类企业的核心敏感信息:账户信息、隐私、业务数据、金融交易记录等,一旦软件应用的安全性不足,不但短期内业务中断、声誉受损,各种信息资产还将透过地下交易流入地下经济产业链,从而造成其业务受到持续影响,给企业造成巨大的财务和信誉风险。

    针对这一趋势变化,大多数企业已经着手实施了关于应用安全性改善的措施,但只有极少数用户实现了从需求-部署的端到端应用安全管理,事实上,数据表明,大多数企业通常选择将应用安全的风险从开发阶段转移至部署甚至是运营阶段,从而导致了漏洞修复的成本居高不下。

业界实践

   渗透测试:从攻击者能力出发,以攻击者视角进行的黑盒测试,从而获得应用系统安全的主观评价,而渗透测试的结果仅能模拟和验证攻击场景,很难应用于切实改善。

  应用安全扫描和测试:针对已上线的应用系统,利用工具进行大范围高效率的扫描和探测,而由于扫描和测试基本在发布和上线后进行,即便发现安全缺陷和不足,已属亡羊补牢。

 开发管理平台:项目需求文档的提交,不关注安全问题的发现。

软件安全架构咨询:借助安全专业咨询顾问进行安全架构的设计和规划,同时尝试将业务与安全相结合,但其效果在一定程度上仍取决于安全功能的实现和验证。

代码级分析工具和技术:借助人工和自动化审计工具,在源代码层面进行安全静态分析和动态测试,而分析和审计的结果分析尚需要专家级安全人员的介入,而目前专家级安全人员目前是大多数企业的瓶颈。

 

需求分析阶段

     任何一个应用软件或者应用系统的核心价值均与其企业使命/业务价值紧密联系。而针对与来自于行业、国家监管机构以及资本市场的要求以及该应用承载业务的分析,将形成该应用软件或系统的安全需求。需求分析作为生命周期理论上实质性的第一步,也是较传统安全实践手段(代码审计、渗透测试等)更为具备业务特色的一个新增安全活动,对系统业务安全性要求的细粒度分析,将为后续业务数据流呈现以及威胁建模过程典型重要的依据和基础。

识别关键安全目标

识别关键安全目标的目的是为了更好的将业务需求、产品设计和安全保障结合起来。识别关键安全目标的方法可以通过两项实践完成:

第一:业务需求整理。对业务部门的最原始需求进行汇总。

第二:业务需求安全分析。通过整理业务需求,将其作为输入,提炼出需求中产品实现的安全关注点,即关键安全目标。对业务需求的关键安全目标分析可从三个方面考虑:

  • 业务需求的考虑:业务部门对软件产品的业务功能实现要求涉及的安全
  • 行业需求的考虑:监管部门对业务的合规要求涉及的安全
  • 安全实践的考虑:现有国际和国内安全体系框架,等级保护,ISO27002等涉及的安全。

定义安全目标路线图

 路线图是一个非常灵活的方法,它是把未来的发展趋势、需求、发展重点、发展策略、相关分析等转换成图表来表示。

在应用软件开发生命周期管理中,借鉴路线图的思想,将安全目标实现的每个条件、保证措施、实现过程用路线图的方式表示,定义每个进程的目标,从软件需求提出到最终产品完成并投入使用,便成为了安全目标路线图。在实践中,我们根据选择不同的开发模式和开发方式来确定开发路线图,制定最优的安全过程

安全功能设计阶段

       本阶段主要是基于前期的安全需求分析,通过受攻击面分析(Attack surface Analysis)和威胁建模(Threat Modeling)两个主要手段,对业务的进行数据流层的呈现和分析,利用STRIDE模型将数据流以及其要素转化成威胁在应用系统的立足点,最终在此基础上形成明确的基于业务流程的安全设计方案。

受攻击面分析

受攻击面是指应用软件任何可被人或其他程序访问的部分。而针对其进行分析的目的是为了减少应用和数据暴露在不可信用户面前的数量。受攻击面将会定位各类数据的进入点,如网络输入/输出,文件输入/输出等,同时更进一步针对进入点的数据类型、信道和协议、访问方法和权限进行尽可能完备的分析,为后续的威胁建模奠定基础。以下是典型的受攻击面分析对象:

  • 文件格式:如PDF、JPG
  • 协议:如HTTP、SSL
  • 方法和动作:针对HHTP,如GET,、POST、PUT、HEAD、 OPTIONS、 TRACE
  •  

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 背景 4 2. 编码安全 4 2.1. 输入验证 4 2.1.1. 概述 5 2.1.2. 白名单 5 2.1.3. 黑名单 5 2.1.4. 规范化 5 2.1.5. 净化 5 2.1.6. 合法性校验 6 2.1.7. 防范SQL注入 6 2.1.8. 文件校验 6 2.1.9. 访问控制 6 2.2. 输出验证 6 2.2.1. 概述 6 2.2.2. 编码场景 6 2.2.3. 净化场景 7 2.3. SQL注入 7 2.3.1. 概述 7 2.3.2. 参数化处理 7 2.3.3. 最小化授权 7 2.3.4. 敏感数据加密 7 2.3.5. 禁止错误回显 8 2.4. XSS跨站 8 2.4.1. 输入校验 8 2.4.2. 输出编码 8 2.5. XML注入 8 2.5.1. 输入校验 8 2.5.2. 输出编码 8 2.6. CSRF跨站请求伪造 8 2.6.1. Token使用 9 2.6.2. 二次验证 9 2.6.3. Referer验证 9 3. 逻辑安全 9 3.1. 身份验证 9 3.1.1. 概述 9 3.1.2. 提交凭证 9 3.1.3. 错误提示 9 3.1.4. 异常处理 10 3.1.5. 二次验证 10 3.1.6. 多因子验证 10 3.2. 短信验证 10 3.2.1. 验证码生成 10 3.2.2. 验证码限制 10 3.2.3. 安全提示 11 3.2.4. 凭证校验 11 3.3. 图灵测试 11 3.3.1. 验证码生成 11 3.3.2. 验证码使用 11 3.3.3. 验证码校验 11 3.4. 密码管理 12 3.4.1. 密码设置 12 3.4.2. 密码存储 12 3.4.3. 密码修改 12 3.4.4. 密码找回 12 3.4.5. 密码使用 12 3.5. 会话安全 13 3.5.1. 防止会话劫持 13 3.5.2. 会话标识符安全 13 3.5.3. Cookie安全设置 13 3.5.4. 防止CSRF攻击 13 3.5.5. 会话有效期 14 3.5.6. 会话注销 14 3.6. 访问控制 14 3.6.1. 跨权访问 14 3.6.2. 控制方法 14 3.6.3. 控制管理 14 3.6.4. 接口管理 15 3.6.5. 权限变更 15 3.7. 文件上传安全 15 3.7.1. 身份校验 15 3.7.2. 合法性校验 15 3.7.3. 存储环境设置 15 3.7.4. 隐藏文件路径 16 3.7.5. 文件访问设置 16 3.8. 接口安全 16 3.8.1. 网络限制 16 3.8.2. 身份认证 16 3.8.3. 完整性校验 16 3.8.4. 合法性校验 16 3.8.5. 可用性要求 17 3.8.6. 异常处理 17 4. 数据安全 17 4.1. 敏感信息 17 4.1.1. 敏感信息传输 17 4.1.2. 客户端保存 17 4.1.3. 服务端保存 17 4.1.4. 敏感信息维护 18 4.1.5. 敏感信息展示 18 4.2. 日志规范 18 4.2.1. 记录原则 18 4.2.2. 事件类型 18 4.2.3. 事件要求 18 4.2.4. 日志保护 19 4.3. 异常处理 19 4.3.1. 容错机制 19 4.3.2. 自定义错误信息 19 4.3.3. 隐藏用户信息 19 4.3.4. 隐藏系统信息 19 4.3.5. 异常状态恢复 20 4.3.6. 通信安全 20

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值