Go模糊测试

本篇文章主要讲解在 go 语言中进行模糊测试的基础知识。通过模糊测试,随机数据会针对您的测试运行,以尝试找出漏洞或导致崩溃的输入。可以通过模糊测试发现的一些漏洞示例包括 SQL 注入、buffer overflow、拒绝服务和 cross-site scripting 攻击。 想要在 go 中使用模糊测试,需要安装 go1.18beta1 以上版本,具体的安装就不过多叙述了。 1 创建项目文件夹 我们创建一个名叫 fuzz-demo 的文件夹,并在其中创建一个名叫 main.go 的文件。 2 输入代码 在 main.go 中输入如下代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package main import "fmt" func Reverse(s string) string { b := []byte(s) for i, j := 0, len(b)-1; i < len(b)/2; i, j = i+1, j-1 { b[i], b[j] = b[j], b[i] } return string(b) } func main() { input := "quick quick brown fox jumped over the lazy dog" rev := Reverse(input) doubleRev := Reverse(rev) fmt....

March 6, 2022 · 3 min · overstarry

Go如何使用私有仓库模块

今天我来讲一讲在 golang 中如何在项目中引用私有仓库吧,在我们的实际生产开发中,往往需要在项目中引用内部代码管理平台上的仓库代码,接下来我来介绍如何在 golang 中使用私有仓库模块。 设置 1 我们的私有代码往往存储在内部的代码管理平台(如 gitlab, gittee 等)上,假设我们的地址是 git.xx.vip. 接下来开始设置一些配置项。 2 设置 GOPRIVATE 变量。 我们先设置 GOPRIVATE 环境变量,GOPRIVATE 会将 GOPRIVATE 变量值所匹配的路径前缀视为私有模块,就不会使用代理和进行校验。设置了 GOPRIVATE 变量后,GONOPROXY 和 GONOSUMDB 环境变量 也会接收同样的值。 3 设置 GOINSECURE 变量 我们的 gitlab 等代码管理平台往往没有使用 https 协议,所以我们需要设置 GOINSECURE 变量,GOINSECURE 变量中的值以逗号分隔,其中的每一个值在 go get 时 不会进行https 协议的校验, 只会采用 http 协议。 4 go get 设置完以上步骤后,可以执行 go get 看看效果,具体命令: go get -v git.xx.vip/swords/xkratos 可以看到相应的库已经顺利拉取成功,并且输出了相应的版本信息 参考 https://go.dev/ref/mod https://go.zhangdeman.cn/archives/62430e03.html https://forum.golangbridge.org/t/using-go-get-to-retrieve-modules-packages-from-a-private-server/17896/6 https://github.com/GoogleCloudPlatform/govanityurls

January 12, 2022 · 1 min · overstarry

Golang多版本共存

为什么要使用多个 go 版本 在我们的日常项目开发中,我们可能会使用多个不同的版本的 go 语言,来进行应用的测试,因为不同的版本有着不同的性能优化,可以通过对不同版本情况的测试,选择线上使用的版本。 如何安装多个 go 版本 可能会有人说,可以通过多个不同的 go 安装包来安装,这种方法是可行的,但 go 官方提供了另一种方法来方便安装。 1 使用 go install 命令安装相应版本的 go , 例如: 1 go install golang.org/dl/[email protected] 2 使用相应命令下载,例如我前面安装的是 go1.18.0beta1,那就使用 go1.18.0beta1 download 下载。 3 下载完毕可以使用对应的版本测试,例如:go1.18.0beta1 version 参考 https://go.dev/doc/manage-install

December 18, 2021 · 1 min · overstarry