对代码执行安全审计:基础知识

已发表: 2021-10-01

安全很重要,而且在当今这个时代比以往任何时候都更重要。 随着网络攻击的增加,许多人开始认真地对其代码进行安全审计。 在这篇博文中,我们将讨论安全审计需要什么以及如何对自己的代码执行审计!


常用技巧

1) 静态分析

静态分析是在不执行代码的情况下检查代码的过程。 这有很多好处,包括能够在部署之前识别潜在的漏洞!

您可以使用 Brakeman 和 Peepcode 等工具进行静态安全审计。 这些工具会查找 Ruby on Rails 应用程序中的常见问题,例如 SQL 注入攻击、跨站点脚本 (XSS) 缺陷、会话固定缺陷等。

您还可以在进行手动审计时使用这些类型的工具,方法是通过搜索应用程序的源代码文件来查找可能指示问题的某些字符串或命令。

注意:不应单独使用静态分析,因为使用 grep / findstr 命令手动完成时会出现太多误报。 它通常只告诉你你已经知道的东西,而不是你不知道的东西。

静态代码分析的优势
  • 尽早识别潜在的安全漏洞,从而在未来节省时间和金钱。
  • 为进一步的手动代码审查工作提供了一个良好的起点。
  • 提供代码库的高级概述。
  • 可以用工具自动化。
静态代码分析的缺点
  • 如果不使用自动化工具,则需要很长时间才能运行。
  • 在运行时环境中使用时不准确。
  • 自动化工具非常适合自动化重复性任务,但它们可能并不支持每种编程语言。
刹车手主页

2) 动态分析

动态分析是运行代码并跟踪其行为的过程。 这可以让您更好地了解应用程序如何与其环境交互,从而揭示系统中的潜在缺陷。

在此阶段,您可以使用 Brakeman 和 WebInspect(用于 Web 应用程序)等工具来识别常见漏洞,以及使用涵盖多种攻击类型(例如 SQL 注入或跨站点脚本 (XSS))的预定义规则集。

您还可以监控服务器发送的标头、用于会话的 cookie 等内容。重要的是要注意,这些引擎不会找到所有内容! 他们一直在改进,所以请确保跟上他们在 Github 上的更新/发布说明。

动态代码分析的优势
  • 它在运行时环境中工作。
  • 您可以在静态代码分析中发现漏报。
  • 检查针对实时应用程序的分析。

动态代码分析的缺点

  • 发现代码中的漏洞是一项艰巨的任务。 这需要时间和耐心,但只要付出足够的努力就可以做到!
  • 动态代码分析中的自动化工具容易出现误报和误报。
  • 他们给人一种虚假的安全感。
微焦点主页

执行安全审计的重要性

现在您对什么是安全审计有了更好的了解,让我们来看看为什么它很重要。 有几个原因:

  • 防止因应用程序受到攻击或黑客攻击而造成损害。 您可以使用本博文中提到的工具来防止这些类型的事情! 它不会是完美的,但它会有所帮助!
  • 避免因违反政策/法规而被罚款,例如 GDPR(通用数据保护条例)。 如果处理不当,像这样的罚款可能会让您破产。
  • 当客户看到他们的数据已通过加密技术等防止未经授权的访问时,让他们感到高兴。客户希望知道他们的数据是安全的。
  • 如果做得正确,以“安全第一”的方法在市场中保持竞争力总是有益的。 执行安全审计不应该只是为了通过审计,而是因为这对您的应用程序和业务/客户来说是正确的!
  • 您还可以通过公开发布您的发现来帮助其他开发人员对其代码执行安全审核,以便他们知道您在审核时发现了哪些问题(如果有)。 这有助于提高所有应用程序的整体软件质量,因为这些工具是开源的并且可以免费下载。 只需要一个人发现问题,其他人也开始注意到!
黑客攻击计算机的人

执行您自己的安全审计

既然我们已经讨论了为什么执行安全审计很重要,让我们来看看如何执行你自己的安全审计!

您应该首先审核容易获得的成果。 这些包括:

  • 注销并以管理员或超级用户身份登录,以确保凭据不会缓存在任何地方(日志文件、浏览器历史记录等)。
  • 运行您的应用程序附带的任何默认管理员帐户,因为如果保持不变,它们将可以公开访问,例如 /admin/users。
  • 根据 NIST(美国国家标准与技术研究院)制定的行业标准规则检查密码强度(如果使用 Rails,它已将其内置到设计中)。

相关:高级安全 Shell:使用 SSH 可以做的 6 件事。

在计算机上编码的人

常见问题

Web 应用程序中最常见的一些问题是什么?

SQL 注入、跨站脚本 (XSS)、会话固定、不安全的直接对象引用等。

在执行安全审计时,是否有我可以通过的检查表?

就在这里! 前往 OWASP(开放 Web 应用程序安全项目)并下载他们的清单以执行安全审计。

有哪些学习 Web 应用程序安全性的好资源?

OWASP、OWASP十大项目、SANS(SysAdmin、Audit、Network)安全阅览室等

我需要多长时间来执行我自己的安全审计?

这取决于您的应用程序的复杂程度,但您通常可以在几天或更短的时间内完成所有唾手可得的成果,具体取决于复杂性。

由于我的 Web 应用程序的复杂性,我是否应该将安全审计工作外包或聘请顾问?

如果时间太长,或者您以前从未执行过这些类型的审计,那么考虑聘请专业人士可能是有意义的。 如果您的应用程序太复杂而无法自行完成,这也是一个好主意。


结论

总之,执行安全审计对于确保代码质量和防止未经授权的访问很重要。 同样重要的是要注意这些工具并不完美,因此您应该始终另外执行手动渗透测试!

如果您在 Joomla 上运行您的网站,那么您可能会对我们列出的 20 条安全提示列表感兴趣,这些提示可针对黑客提供坚如磐石的安全保障!