0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

干货:使用命令行工具检查代码及确保代码安全

如意 来源:Linux中国 作者:佚名 2020-09-03 14:56 次阅读

凭借广泛的语言支持,Graudit 可以让你在开发过程中的审计你的代码安全。

测试是软件开发生命周期(SDLC)的重要组成部分,它有几个阶段。今天,我想谈谈如何在代码中发现安全问题。

在开发软件的时候,你不能忽视安全问题。这就是为什么有一个术语叫 DevSecOps,它的基本职责是识别和解决应用中的安全漏洞。有一些用于检查 OWASP 漏洞的开源解决方案,它将通过创建源代码的威胁模型来得出结果。

处理安全问题有不同的方法,如静态应用安全测试(SAST)、动态应用安全测试(DAST)、交互式应用安全测试(IAST)、软件组成分析等。

静态应用安全测试在代码层面运行,通过发现编写好的代码中的错误来分析应用。这种方法不需要运行代码,所以叫静态分析。

我将重点介绍静态代码分析,并使用一个开源工具进行实际体验。

为什么要使用开源工具检查代码安全?

选择开源软件、工具和项目作为开发的一部分有很多理由。它不会花费任何金钱,因为你使用的是一个由志趣相投的开发者社区开发的工具,而他们希望帮助其他开发者。如果你有一个小团队或一个初创公司,找到开源软件来检查你的代码安全是很好的。这样可以让你不必单独雇佣一个 DevSecOps 团队,让你的成本降低。

好的开源工具总是考虑到灵活性,它们应该能够在任何环境中使用,覆盖尽可能多的情况。这让开发人员更容易将该软件与他们现有的系统连接起来。

但是有的时候,你可能需要一个功能,而这个功能在你选择的工具中是不可用的。那么你就可以选择复刻其代码,在其上开发自己的功能,并在你的系统中使用。

因为,大多数时候,开源软件是由社区驱动的,开发的速度往往是该工具的用户的加分项,因为他们会根据用户的反馈、问题或 bug 报告来迭代项目。

使用 Graudit 来确保你的代码安全

有各种开源的静态代码分析工具可供选择,但正如你所知道的,工具分析的是代码本身,这就是为什么没有通用的工具适用于所有的编程语言。但其中一些遵循 OWASP 指南,尽量覆盖更多的语言。

在这里,我们将使用 Graudit,它是一个简单的命令行工具,可以让我们找到代码库中的安全缺陷。它支持不同的语言,但有一个固定的签名集。

Graudit 使用的 grep 是 GNU 许可证下的工具,类似的静态代码分析工具还有 Rough Auditing Tool for Security(RATS)、Securitycompass Web Application Analysis Tool(SWAAT)、flawfinder 等。但 Graudit 的技术要求是最低的,并且非常灵活。不过,你可能还是有 Graudit 无法满足的要求。如果是这样,你可以看看这个列表的其他的选择。

我们可以将这个工具安装在特定的项目下,或者全局命名空间中,或者在特定的用户下,或者任何我们喜欢地方,它很灵活。我们先来克隆一下仓库。

$ git clone https://github.com/wireghoul/graudit

现在,我们需要创建一个 Graudit 的符号链接,以便我们可以将其作为一个命令使用。

$ cd ~/bin && mkdir graudit

$ ln --symbolic ~/graudit/graudit ~/bin/graudit

在 .bashrc (或者你使用的任何 shell 的配置文件)中添加一个别名。

#------ .bashrc ------

alias graudit=“~/bin/graudit”

重新加载 shell:

$ source ~/.bashrc # 或

$ exex $SHELL

让我们通过运行这个来检查是否成功安装了这个工具。

$ graudit -h

如果你得到类似于这样的结果,那么就可以了。

我正在使用我现有的一个项目来测试这个工具。要运行该工具,我们需要传递相应语言的数据库。你会在 signatures 文件夹下找到这些数据库。

$ graudit -d ~/gradit/signatures/js.db

我在现有项目中的两个 JavaScript 文件上运行了它,你可以看到它在控制台中抛出了易受攻击的代码。

JavaScript file showing Graudit display of vulnerable code

JavaScript file showing Graudit display of vulnerable code

你可以尝试在你的一个项目上运行这个,项目本身有一个长长的数据库列表,用于支持不同的语言。

Graudit 的优点和缺点

Graudit 支持很多语言,这使其成为许多不同系统上的用户的理想选择。由于它的使用简单和语言支持广泛,它可以与其他免费或付费工具相媲美。最重要的是,它们正在开发中,社区也支持其他用户。

虽然这是一个方便的工具,但你可能会发现很难将某个特定的代码识别为“易受攻击”。也许开发者会在未来版本的工具中加入这个功能。但是,通过使用这样的工具来关注代码中的安全问题总是好的。

总结

在本文中,我只介绍了众多安全测试类型中的一种:静态应用安全测试。从静态代码分析开始很容易,但这只是一个开始。你可以在你的应用开发流水线中添加其他类型的应用安全测试,以丰富你的整体安全意识。
责编AJX

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10981

    浏览量

    206687
  • 源代码
    +关注

    关注

    94

    文章

    2923

    浏览量

    66047
  • 命令行
    +关注

    关注

    0

    文章

    75

    浏览量

    10344
收藏 人收藏

    评论

    相关推荐

    在STM32实现命令行

    工作中的开发环境都是基于linux命令行交互,作为命令行的重度使用者,玩单片机也要使用命令行工具,百度了一些命令行
    发表于 12-09 11:32 1615次阅读

    Linux命令行工具

    Linux 新手往往对命令行心存畏惧。部分原因是因为需要记忆大量的命令,毕竟掌握命令是高效使用命令行的前提不幸的是,学习这些命令并无捷径,
    发表于 07-25 08:10

    为什么需要使用命令行调试程序?

    为什么需要使用命令行调试程序?通过嵌入式开发中通过命令行调试程序的过程是怎样的?
    发表于 12-24 06:44

    请问如何在代码里执行命令行啊?

    请问如何在代码里执行命令行啊?比如,在命令行可以执行echo abcdefg aaa.txt生成一个aaa.txt。那么如何在程序中执行 echo abcdefg aaa.txt 这一命令行
    发表于 10-28 10:15

    openssl无法使用命令行生成CMAC怎么解决?

    我正在尝试生成应用程序代码的离线 CMAC 以实现安全启动。我曾尝试使用 openssl,但无法使用命令行生成 CMAC。是否有任何工具可以生成应用程序
    发表于 03-30 06:35

    caxa命令行中的应用

    caxa命令行中的应用 命令行对于大多用户来说往往只是输入数据的作用,但是其中的奥妙还有很多,下面就给大家
    发表于 10-18 18:18 2162次阅读

    Xilinx软件命令行工具:XSCT开发和调试

    了解如何使用XSCT,Xilinx软件命令行工具进行开发和调试。 该视频演示了XSCT如何充当Xilinx SDK的命令行控制台。
    的头像 发表于 11-21 06:02 1.3w次阅读

    Xilinx软件命令行工具进行开发和调试

    了解如何使用XSCT,Xilinx软件命令行工具进行开发和调试。 该视频演示了XSCT如何充当Xilinx SDK的命令行控制台。
    的头像 发表于 11-22 06:53 6072次阅读

    维基链的命令行是如何高效快速的对维基链节点进行操作的

    命令行,是一种面向开发者的工具。 众所周知,在Linux系统中,Linux本身也提供了一系列的命令行工具,比如ls、cd、ps等等开发者常用命令
    发表于 06-24 11:15 861次阅读

    Golang基于flag库实现一个命令行工具

    Golang 标准库中的 flag 库提供了解析命令行选项的能力,我们可以基于此来开发命令行工具
    的头像 发表于 10-28 09:26 970次阅读

    新的开源命令行工具west

    电子发烧友网站提供《新的开源命令行工具west.zip》资料免费下载
    发表于 11-11 09:25 0次下载
    新的开源<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>west

    如何使用命令行在Linux中查找文件?

    终端,命令行提供了几个用于搜索文件的工具,包括查找、定位、grep 和 where is,仅举几例。 那么如何使用命令行在Linux中查找文件?在Linux中查找文件的12 种方法: 1、查找
    的头像 发表于 03-23 14:55 2423次阅读

    用命令行工具ADB(Android Debug Bridge)常见的ADB命令

    ADB(Android Debug Bridge)是一种通用命令行工具,可以让您通过计算机与设备通信。
    的头像 发表于 11-05 11:26 387次阅读

    pycharm命令行终端运行代码

    Python是一种非常流行的编程语言,许多开发者使用它来编写各种应用程序和脚本。为了方便开发者编写和测试代码,PyCharm是一种集成开发环境(IDE),它提供了许多功能和工具,其中包括命令行终端
    的头像 发表于 11-22 11:20 1296次阅读

    eclipse怎么使用命令行

    命令行中使用Eclipse来完成一些特定的任务。本文将详细介绍如何在命令行中使用Eclipse。 首先,我们需要确保已经正确安装了JDK(Java Development Kit)和Eclipse
    的头像 发表于 12-06 11:26 860次阅读