Gosec

Golang 安全检查器
授权协议 Apache-2.0
开发语言 Google Go
所属分类 开发工具、 代码管理分析/审查/优化
软件类型 开源软件
地区 不详
投 递 者 阎英朗
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Gosec 是一个 Golang 安全检查器,通过扫描 Go AST 来检查源代码的安全问题。

Gosec 可以被配置为只运行一个规则子集,排除某些文件路径,并产生不同格式的报告。默认情况下,所有的规则都是针对所提供的输入文件运行的。要从当前目录进行递归扫描,你可以提供./...作为输入参数。

Available rules

  • G101:查找硬编码凭据
  • G102:绑定到所有接口
  • G103:审计不安全块的使用
  • G104:未检查审计错误
  • G106:审计 ssh.InsecureIgnoreHostKey 的使用
  • G107:作为污点输入提供给 HTTP 请求的 URL
  • G108:分析端点自动暴露在 /debug/pprof
  • G109:strconv.Atoi 结果转换为 int16/32 造成的潜在整数溢出
  • G110:通过解压炸弹的潜在 DoS 漏洞
  • G201:使用格式字符串构建 SQL 查询
  • G202:使用字符串连接的 SQL 查询构造
  • G203:在 HTML 模板中使用未转义数据
  • G204:审计命令执行的使用
  • G301:创建目录时使用的文件权限较差
  • G302:与 chmod 一起使用的文件权限较差
  • G303:使用可预测的路径创建临时文件
  • G304:作为污点输入提供的文件路径
  • G305:解压 zip/tar 存档时的文件遍历
  • G306:写入新文件时使用的文件权限较差
  • G307:推迟返回错误的方法
  • G401:检测DES、RC4、MD5或SHA1的使用
  • G402:查找错误的 TLS 连接设置
  • G403:确保最小 RSA 密钥长度为 2048 位
  • G404:不安全的随机数源(rand)
  • G501:导入阻止列表:crypto/md5
  • G502:导入阻止列表:crypto/des
  • G503:导入阻止列表:crypto/rc4
  • G504:导入阻止列表:net/http/cgi
  • G505:导入阻止列表:crypto/sha1
  • G601:范围语句中项目的隐式内存别名

Retired rules

  • Secure Go  - A project devoted to secure programming in the Go language, gosec   - Golang Security Checker为go语言安全编码的github,其默认提供了如下规则。在扫描过程中,我们针对部分中签的规则,找到了一些安全编码的解决办法。 万能解决办法 如果gosec报告已手动验证为安全的,则可以使用

  • 声明: 本教程是在自己的电脑上本地测试Gosec的效果,所以不涉及其他运行模式,如果想要了解其他模式可以关注后期文档,如果想要自定义交流自定义代码扫描规则,可以跟我交流沟通。 背景: Gosec是一个通过扫描Go AST来检查源代码是否存在安全问题的开源项目。公司到成长到一定程度,就需要对代码进行审计,针对Go的作为主要的开发语言,我就测试一下Gosec的效果。 使用教程 要求 已经配置好Go的开

  • 1、安装go环境 [root@localhost home]# wget https://golang.google.cn/dl/go1.15.5.linux-amd64.tar.gz --2021-01-11 17:34:59-- https://golang.google.cn/dl/go1.15.5.linux-amd64.tar.gz 正在解析主机 golang.google.cn (g

 相关资料
  • 通过系统内置规则,将匹配规则的安全性较低的资源扫描出来并按照建议进行处理,从而提高系统安全性的目的。 建议列表 建议列表显示所有匹配优化建议规则的资源列表,用户可根据建议对资源进行处理。 忽略列表 忽略列表显示不需要处理的资源或一类规则建议。 规则配置 规则配置即根据系统内影响资源安全的条件设置相应的规则,如安全组的规则设置等,当资源匹配规则则表示资源的安全性较低,需要用户进行处理等。

  • 当我的程序在一些迭代之间启动时,我会得到输出标志值,这意味着引用检查在同一引用上失败。但经过一些迭代后,输出变为常量值,然后长时间执行程序,不会生成一个输出。 如输出所示,经过n次(不固定)迭代后,输出似乎是一个常数值,不会改变。 输出: 对于某些迭代:

  • flutter似乎在空安全检查和非空安全检查之间切换,导致了几十个问题。 空错误检查返回???

  • Apache Commons Collections库的CollectionUtils类为常见操作提供了各种实用方法,涵盖了广泛的用例。 它有助于避免编写样板代码。 这个库在jdk 8之前非常有用,因为Java 8的Stream API现在提供了类似的功能。 检查非空列表 CollectionUtils的isNotEmpty()方法可用于检查列表是否为空而不必担心空列表。 因此,在检查列表大小之前

  • 问题内容: 关于Java安全性的这篇文章说: 每当要进行危险的操作时,Java库中的代码都会向安全管理器咨询。 那么,这到底是什么意思?说,如果我已经实现了自己的安全管理器并为整个JVM启用了它。现在,java运行时是否针对每个Java调用(例如System.out.println()等)咨询我的securitymanager,还是仅针对诸如System.exit(),文件操作等api调用进行咨询

  • 问题内容: 我有以下代码: 一直有人告诉我,不要检查浮点数是否相等。检查是否等于零是否有所不同? 问题答案: 您不应该检查浮点数是否相等的原因是浮点数不够精确- 一些数字在存储中存在一些不准确性,例如那些延伸到尾数太远并且重复小数的数字(请注意,我在说关于在基数2中重复小数)。您可以将这种不精确性视为“四舍五入”。超出浮点数精度的数字将被截断,有效地四舍五入。 如果它没有改变,它将保持平等。但是,

  • 问题内容: 我正在编写脚本以将图像上传到我的应用程序。以下安全步骤是否足以使应用程序从脚本角度安全? 使用.httaccess禁止PHP在上传文件夹中运行。 如果文件名包含字符串“ php”,则不允许上传。 仅允许扩展名:jpg,jpeg,gif和png。 仅允许图像文件类型。 禁止使用两种文件类型的图像。 更改图像名称。 上载到不是根目录的子目录。 这是我的脚本: 欢迎任何新提示:) 问题答案:

  • 所以我想对值中包含的值进行空安全检查。 所以我有三个相互包含的对象: Person有一个衣服对象,这个衣服对象有一个国家对象,这个国家对象有一个资本 所以一个人可能没有衣服,所以像这样的支票会抛出一个空指针: 如果路径上的任何对象为空,我如何使这样的语句返回false? 我也不想这样做。(如果可能的话,Java-8中的一行。