如果我在下面的片段上运行gosec,我会得到一个被污染的URL警告:第一个月
我想我应该使用'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)
}
字符串
3条答案
按热度按时间sr4lhrrt1#
如果你使用的是golangci-lint,并希望它忽略这个警告,因为你不能将url设置为常量,你可以像这样使用
//nolint
指令:字符串
8e2ybdfx2#
根据
G107
的指南,您应该在const
中提到url
。字符串
为了更好地理解,您可以参考这里:https://securego.io/docs/rules/g107.html
或
如果你想删除
G107
警告,那么你应该明确排除它。型
如需了解更多信息,请参阅gosec文档:https://github.com/securego/gosec的
kx1ctssn3#
解决这个问题的一种方法是更改执行请求的函数。不使用
http.Get(url)
,可以使用http.NewRequest(method, url, body)
封装请求,因此请求不会立即执行。所以你的最终代码可能是:字符串
通过此更新,
http.NewRequest
验证方法和URL,为请求设置上下文,并在必要时提供更大的更改灵活性。