应用安全目标和控制

  1. 目标(CIA)

保密性、完整性、可用性

  1. 控制(AAA)

身份认证,多因素等

授权,SSO等

审计,日志等

应用程序安全原则

  1. 分层安全

全方位防御:Firewalls、WAF、强输入验证、输出编码、身份验证、授权系统

  1. 结构安全

    关闭不必要端口、组件安全

  2. 分段

    组件分割,站库分离、多角色多权限

  3. 独立安全

    确保单独系统安全,内部应用程序,增大横向渗透难度

  4. 最小特权

    设计阶段分析权限分配

在SDLC中管理安全

安全整合在每个阶段:瀑布、喷泉、螺旋、构建与修复、快速成型、增量、同步与稳定

可行性和需求分析

  1. 体系结构和设计

    开发时将需求->系统设计,满足必要需求

    威胁建模,映射体系结构、识别组件、识别组件输入和输出、识别每个组件的误用案例、构建攻击树列举可能的弱点

  2. 开发

    系统设计->工作代码

    各种常见漏洞,SQL注入,XSS等,安全编码,代码扫描

    开发文档

  3. 质量保证

    QA,评估应用程序是否完全满足所有要求

    质量测试与安全测试不同

  4. 部署和运营

    生产环境

  5. 维护

    改进更新、修复错误

安全开发的模式和做法

  1. 目标

    认识在开发过程中推出的共同危险模式

    避免设计和开发过程中的常见安全问题

    确定安全编码做法以提高应用程序安全

  2. 数据属性

    敏感数据,保护敏感数据,框架、加密秘钥管理

    传递敏感对象,

    不可变对象,

    序列化,注意执行序列化代码的权限

    反序列化,输入验证、保护构造函数、检查数据长度、范围、格式

  3. 代码属性

    序列化,与反序列化输入验证类似

    远程调用(RPC,远程过程调用),允许应用程序与其他进程或系统进行通信,可信网络部署应用,身份验证及SSL,最小权限本地账户运行服务

    包装处理,包装操作系统句柄

    模拟,代码可能需要降权或提权运行,执行授权检查,sudo

    与本地代码进行互动,不要依赖安全决策名称,检查代码调用及路径

    禁止使用API,如strcpy使用strcpy_s,禁用及替代,自动构建过程

    数据泄露,

Leave a Reply

Your email address will not be published. Required fields are marked *