【发布时间】:2022-07-29 15:26:26
【问题描述】:
如果我在下面的片段上运行 gosec,我会收到一个污染的 URL 警告:
G107 (CWE-88): Potential HTTP request made with variable url (Confidence: MEDIUM, Severity: MEDIUM)
我想我应该使用 'url' 包,但它似乎没有提供比 ParseQuery() 更多的功能来检测这一点,但尽管它给出了一个错误,但 gosec 仍然报告为一个潜在的漏洞。
我如何编写删除警告,***只使用标准库?
func Run() {
MakeGetRequest("https://www.google.com/hi?a=7; rm /* -rf")
}
func MakeGetRequest(uri string) {
res, _ := http.Get(uri)
fmt.Println(res)
}
-
securego.io/docs/rules/g107.html 我认为这与
; rm /* -rf
无关;它是关于作为字符串传入的 URL,可能从用户提供的输入中设置。我不知道url.Parse
是怎么解决的;有效的 url 仍然可能是恶意的。 CWE-88 是关于命令注入,但 G107 似乎更多的是关于 url 设置 -
老实说,我只是附加了 rm 以显示“注入”,如果您 ParseQuery 它抱怨,但这并不能帮助您在没有受污染组件的情况下重新组装 URI。本质上,我想整理 CI 管道中的 gosec 警告,但我不知道如何使这些“安全”,因此检查通过而没有报告。 (我的理念是,如果你不能解决警告,或者它被认为不够重要,那么让它贬低报告的整个目的,意味着人们不会检查它是否有更严重的问题)
-
您是否尝试在 const 中设置 url?即 const url = " google.com/hi?a=7 ; rm /* -rf" ?
-
它需要在不同的环境下工作,所以不能是const