代码审计

2024-06-14 14:20:12 浏览数 (1)

项目管理中经常讲,合规大于天,在工程上审计部门也会对项目进行代码审计。代码审计和代码审查有什么不同呢?

代码审计和代码审查是软件开发中两个不同的过程,它们在目的、方法和执行时机上有所不同。

1. **目的**:

- 代码审计(Code Audit)通常指对代码的安全性、性能、可维护性等方面进行全面的检查和评估,以发现潜在的漏洞、错误和缺陷。其重点在于发现可能导致安全问题或其他问题的代码缺陷。

- 代码审查(Code Review)则是一种软件质量保证过程,旨在通过对代码的逐行检查,确保其符合预期的设计、标准和最佳实践。其重点在于提高代码质量、可读性和可维护性。

2. **方法**:

- 代码审计通常由安全专家或专门的审计团队执行,他们可能使用自动化工具和手动分析技术来检查代码中的漏洞和风险。

- 代码审查通常由开发团队的成员(通常是同事)执行,他们通过一系列的代码审查会议或工具,共同检查彼此的代码。审查者通常是项目组内的其他开发人员,有时也可能是专门的质量保证团队成员。

3. **执行时机**:

- 代码审计通常在软件开发周期的晚期或者发布之前执行,以确保代码的安全性和稳定性。

- 代码审查则是在代码编写的早期和频繁阶段执行,以确保代码质量和规范符合团队的期望。

虽然代码审计和代码审查都是重要的软件开发实践,但它们的目标和方法有所不同,因此在软件开发过程中,通常都会同时进行这两种活动以确保代码的质量和安全性。上面来自https://chatgpt.com/

那么我们从工程的哪些方面去注意这些事情呢?

  1. xss-首先查看是否有全局过滤器
  2. 业务逻辑漏洞
  3. 垂直越权,之前防止垂直越权感觉设计不合理
  4. sql注入 $拼接 #预编译 like解决方案 where uname like concat('%',#{name},'%');、 in 解决方案 where uname in <foreach> #{name} <foreach> order by 用枚举字段 $ in like order by group by不能直接用# 通过预编译 in like order by group by 不能直接解决
  5. 命令执行
  6. 文件上传
  7. spel存在相关漏洞
  8. 开源组件及版本,收集开源组件漏洞。fastjson、log4j、druid等
  9. 代码执行rce
  10. spel存在相关漏洞
  11. 重定向、关键字:Redirect
  12. http响应拆分 如果拼接参数不可控制 需要过滤crlf字符。CRLF 是 Carriage Return (回车) 和 Line Feed (换行) 的缩写,分别用字符 r 和 n 表示。CRLF 字符通常用来表示文本行的结束。
  13. 单例双重检查锁定
  14. Spring Boot DevTools

发现一个不错的代码审计学习整理的项目,对代码审计感兴趣的小伙伴可以去看看。https://github.com/0e0w/Hackjava。

代码审计只是项目安全的一部分,安全架构包括身份认证、访问控制、内容安全、监控审计、备份恢复等,包括各个维度的安全。安全架构在4A架构中承上启下。合规和效率,需要不断的权衡和取舍。

0 人点赞