应用系统开发安全

× 文章目录
  1. 1. 一、安全原则
  2. 2. 二、需求管理阶段
  3. 3. 三、系统设计阶段
  4. 4. 四、系统实现阶段
  5. 5. 五、系统测试阶段
  6. 6. 六、系统上线阶段
  7. 7. 七、文档管理
  8. 8. 八、外包管理

一、安全原则

  1. 保护最薄弱的环节原则:保护最易受攻击影响的部分;
  2. 纵深防御原则:不同层面、不同角度之间需要相互配合;
  3. 最小权限原则:只授予执行操作所需的最小权限;
  4. 最小共享原则:使共享文件资源尽可能少;
  5. 权限分离原则:授予不同用户所需的最小权限,并在它们之间形成相互制约的关系;

二、需求管理阶段

  1. 根据业务目标分析并制定系统安全目标;
  2. 确认安全需求规格说明。

三、系统设计阶段

  1. 根据安全目标执行威胁建模,识别威胁和风险;
  2. 根据威胁建模制定对应开发安全任务:
    • 确定安全体系架构,设计安全协议和安全接口;
    • 确定访问控制与身份鉴别机制,定义主体角色和权限;
    • 信息输入的安全过滤,信息输出的校验和控制;
    • 数据结构安全设计,选择加密方法和算法;
    • 确定敏感数据保护方法;
    • 内部处理逻辑安全设计;
    • 评估内部通信机制,确定完整性机制。

四、系统实现阶段

  1. 开发环境安全管理要求:
    • 软件系统开发、测试禁止在生产环境中进行;
    • 开发环境中的开发用机应进行统一安全配置及时进行系统补丁升级和漏洞修复;
    • 软件程序不得篡改应用软件所运行的环境或平台中任何安全配置、安全文件和安全程序。
  2. 编码安全要求(后面会有详细讲解):
    • 遵循代码编写安全规范,根据代码编写安全规范以及安全设计方案进行系统开发;
    • 遵循通用安全编程准则,包括输入验证、缓存溢出、安全调用组件和程序编译等;
    • 遵循机密性要求,保护用户访问信息的机密性,严禁在客户端存放敏感数据
    • 避免内存溢出,严格检查和验证输入输出信息等;
    • 遵循结构化异常处理机制,捕捉并处理程序异常,防止系统信息泄露
    • 遵循代码脆弱性防范要求,包括缓冲区溢出、SQL注入、跨站脚本攻击、XML注入攻击、HTTP HEAD注入等。
  3. 开发流程安全要求:
    • 开发过程中应对阶段性开发成果进行有效管理;
    • 开发过程中应定期进行代码静态分析,使用代码审核工具对源代码进行检测,并报告源代码中存在的安全弱点;
    • 开发人员不得超越其规定权限进行开发,不得在程序中设置后门或恶意代码程序。

五、系统测试阶段

  1. 测试内容应包括代码的安全测试和安全功能测试;
  2. 代码的安全测试是指使用代码测试工具或渗透测试来识别代码的安全脆弱性,并应按照其提供的修复建议进行修复;
  3. 安全功能测试主要包括身份认证和访问控制的功能测试;
  4. 测试系统环境应尽可能模拟生产环境并与生产环境进行安全隔离;
  5. 真实数据不得直接在测试环境中使用,须进行适当修改或屏蔽,在测试完成之后须立即从测试应用系统清除运行信息;
  6. 测试人员编制安全测试方案,构造安全测试用例;
  7. 验收测试不得由开发人员兼岗。

六、系统上线阶段

  1. 系统上线须在内部验收通过后进行;
  2. 需进行上线前试运行,确认应用系统是否符合上线要求;
  3. 上线成功后,记录上线的日期和内容。

七、文档管理

  1. 源代码的变更和版本发布进行统一控制,对程序资源库的任何修改、更新和发布都需经部门主管领导授权和批准;
  2. 应指定专人妥善保管程序源代码及相关技术文档。

八、外包管理

  1. 应与外包开发单位签署相关知识产权保护协议和保密协议;
  2. 外包开发单位进行系统开发过程中须严格遵循本制度的相关安全要求;
  3. 在系统开发过程中须指派专人监督审核外包开发单位在各个阶段安全要求的执行情况;
  4. 外包开发单位在系统开发完成后提供程序源代码和相关技术文档,不得将计算机系统采用的关键安全技术措施和核心安全功能设计对外公开;
  5. 应对开发完成后的应用软件进行审查或检测。