当前位置: 首页 > news >正文

# 开发安全

开发安全

文章目录

  • 开发安全
    • 安全开发生命周期
    • 安全开发目标
    • 安全开发基本准则
    • 注入类攻击手段
      • Sql注入
      • 命令执行
      • 命令执行防御
      • 文件遍历
      • 防御
    • 植入类安全漏洞防御
      • XSS(前端漏洞)
        • 防御
      • 储存型XSS
      • 文件上传
        • 防御
      • CSRF
        • 防御
      • 会话固定
        • 防御
    • 其它类型安全漏洞
      • 越权访问
        • 防御
      • 口令爆破
    • 安全编码规范
      • 输入验证和数据净化
    • 业务安全漏洞
      • 逻辑漏洞
        • 逻辑混淆
        • 流程乱序
        • 数据重放
      • 规避方案
    • 第三方安全
      • 缓解方案
    • 如何安全的开发
      • 安全培训
      • 安全设计
      • 安全编码
      • 代码审查
      • 安全测试
      • 定期更新和补丁
      • 访问控制
      • 加密
      • 事件监控和响应
      • 持续改进
      • 事件监控和响应
      • 持续改进

开发安全是指在软件开发过程中注重安全性,采取措施防止恶意攻击和数据泄露。这包括对代码进行安全审查,使用安全编程实践和工具,以及定期进行安全漏洞扫描和修复。开发安全是确保软件系统在设计和实现阶段考虑到安全性,并且在运行时能够有效地保护系统和数据免受攻击和威胁的过程。

安全开发生命周期

  • 需求分析阶段
  • 设计阶段:考虑安全方面的设计
  • 开发阶段:遵守编码安全规范、自动化测试工具
  • 测试阶段:渗透测试
  • 部署维护阶段:定期更新修复安全漏洞

安全开发目标

  • 保护隐私
  • 防止安全攻击漏洞
  • 确保系统可用
  • 遵守法律
  • 维护品牌荣誉
  • 节省成本资源

安全开发基本准则

  • 安全优先
  • 防御性编程:编写健壮的程序,能处理不良输入和异常输出

注入类攻击手段

Sql注入

  • 改变sql语义
SELECT * FROM users WHERE username = '输入的用户名' AND password = '输入的密码';
# 如果攻击者在用户名字段中输入 ' OR '1'='1 ,那么SQL查询就会变成:
SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '输入的密码';
  • SQL注入:预编译sql

命令执行

  • 通过改变输入执行系统命令。调用cmdping

命令执行防御

  • 参数化传值,避免拼接用户输入

  • 验证、过滤

  • 最小权限原则

文件遍历

  • 遍历到文件目录扫面文件

防御

  • 路径规范化、验证过滤、白名单机制、最小权限规则
  • 获取绝对路径getAbsolutePath()

植入类安全漏洞防御

XSS(前端漏洞)

  • Web页面插入恶意JS、钓鱼实现
防御
  • 过滤验证(白名单)、设置http头部
  • 输出的内容进行编码
  • 使用安全的前端框架

储存型XSS

  • 储存型Xss不会直接将恶意代码响应至前端浏览器进行渲染执行,先存储在数据库等介质中。

  • 为了防止储存型XSS攻击,开发人员应该对用户输入进行适当的过滤和转义,以防止恶意脚本被存储和执行。最好的做法是采用内容安全策略(CSP)来限制页面加载的资源和脚本,以及对用户输入进行严格的验证和过滤。这样可以有效地防止储存型XSS攻击。

文件上传

  • WebShell脚本文件

  • 上传恶意文件,自动执行

  • 直接拿下服务器

防御
  • 不能仅仅使用前端进行校验,需要在后端校验

  • 文件名称校验

  • 文件内容校验

  • 路径隔离,限制文件的执行权限

CSRF

  • 敏感的操作需要考虑CSRF攻击

  • 跨站请求伪造,受害者已经登陆的状态下

  • 常见的盗号、钓鱼页面、钓鱼网站

防御
  • 请求带上token
  • 同源检测

会话固定

  • 向用户传递一个一致的会话标识,引导用户使用该会话标识进行身份认证
防御
  • 随机会话id
  • 会话绑定
  • 安全的会话管理
  • 双重认证

其它类型安全漏洞

越权访问

  • 数据权限问题
防御
  • 校验输入
  • 权限最小化
  • 双重身份认证、强密码多因素
  • 关键操作日志,定期审计和监控

口令爆破

  • 需要使用强密码
  • 密码策略
  • 登录失败限制
  • 多因素身份认证
  • 安全监控

安全编码规范

输入验证和数据净化

  • 净化非受信数据(从外界来的数据),比如使用sql预编译防止sql注入问题
  • 避免目录遍历漏洞
  • 不要记录未净化过的数据,避免产生数据污染
  • 文件或者网络IO两端使用兼容的编码

业务安全漏洞

逻辑漏洞

逻辑混淆
  • 不充分的逻辑设计
  • 复杂的业务逻辑
  • 修改和维护中的逻辑变更:注释、交接
流程乱序
  • 业务流程执行的顺序与预期不符。产生原因有:并发操作
数据重放
  • 缺乏合适的身份认证和授权机制
  • 不安全的通信协议

规避方案

  • 充分的需求和设计,确保程序的逻辑结构清晰,合理,并充分考虑各种肯能的情况和分支
  • 逻辑注释和文档
  • 代码审查和测试

第三方安全

  • 漏洞和脆弱性
  • 依赖管理
  • 恶意注入和后门

缓解方案

  • 审查和评估
  • 定期更新
  • 依赖管理
  • 漏洞披露和响应
  • 安全编码实践

如何安全的开发

安全培训

  • 确保开发团队接受适当的安全培训,了解常见的安全漏洞和攻击方式,以及如何编写安全代码。

安全设计

  • 在软件设计阶段就考虑安全问题,例如通过威胁建模和安全架构评估来识别和减少安全风险。

安全编码

  • 遵循安全编码最佳实践,例如输入验证、输出编码、访问控制、错误处理和加密等。

代码审查

  • 在代码提交前进行代码审查,以识别和修复安全漏洞。可以使用静态代码分析工具来帮助识别漏洞。

安全测试

  • 在开发过程中进行安全测试,包括渗透测试和安全评估,以识别和修复安全漏洞。

定期更新和补丁

  • 定期更新和修补软件和系统,以修复已知的安全漏洞和错误。

访问控制

  • 实施严格的访问控制策略,限制对敏感数据和系统的访问。

加密

  • 使用加密技术保护敏感数据,例如使用 SSL/TLS 加密网络通信,使用加密算法保护存储的数据。

事件监控和响应

  • 实施事件监控和响应计划,以识别和响应安全事件。

持续改进

  • 定期评估和改进安全实践,以适应新的安全威胁和技术趋势。

总之,提高开发安全需要全面的安全实践,包括安全培训、安全设计、安全编码、代码审查、安全测试、定期更新和补丁、访问控制、加密、事件监控和响应、以及持续改进。
加密

  • 使用加密技术保护敏感数据,例如使用 SSL/TLS 加密网络通信,使用加密算法保护存储的数据。

事件监控和响应

  • 实施事件监控和响应计划,以识别和响应安全事件。

持续改进

  • 定期评估和改进安全实践,以适应新的安全威胁和技术趋势。

总之,提高开发安全需要全面的安全实践,包括安全培训、安全设计、安全编码、代码审查、安全测试、定期更新和补丁、访问控制、加密、事件监控和响应、以及持续改进。

http://www.lryc.cn/news/377799.html

相关文章:

  • Qt MaintenanceTool.exe使用镜像源更新Qt
  • Java 8 Stream API介绍
  • 【前端技巧】css篇
  • 2024年6月20日 (周四) 叶子游戏新闻
  • Zookeeper 一、Zookeeper简介
  • 普通一本能找到嵌入式linux工作吗?
  • Effective C++ 改善程序与设计的55个具体做法笔记与心得 3
  • 苹果的后来者居上策略:靠隐私保护打脸微软
  • java经典面试题--进程和线程的关系/区别
  • Solr 日志系统7.4.0部署和迁移到本地,Core Admin 添加新的core报错
  • 前缀和+双指针,CF 131F - Present to Mom
  • HCIA-速查-ENSP模拟器2步清空配置
  • 优选算法刷题笔记 2024.6.10-24.6.20
  • 无需科学上网:轻松实现国内使用Coze.com平台自己创建的Bot(如何实现国内免费使用GPT-4o/Gemini等最新大模型)
  • 【车载开发系列】CAN通信总线再理解(中篇)
  • 系统编程:互斥锁,条件变量
  • 蓝鹏测控公司全长直线度算法项目多部门现场组织验收
  • 使用Python进行音频处理
  • 家有老人小孩,室内灰尘危害大!资深家政教你选对除尘空气净化器
  • AI在创造与毁灭之间摇摆:音乐产业的机遇与挑战并存
  • Spring Boot集成 Spring Retry 实现容错重试机制并附源码
  • MDK-ARM 编译后 MAP 文件分析
  • antv g6实现系统拓扑图
  • 因路径规划异常导致导航停止 Failed to pass global plan to the controller
  • AOSP开发环境搭建
  • React native新架构组成
  • Spring Security+Spring Boot实现登录认证以及权限认证
  • 5款堪称变态的AI神器,焊死在电脑上永不删除!
  • Python和OpenCV图像分块之图像边长缩小比率是2
  • C语言中的位域(bit-field)是什么,以及它的用途和优缺点