登录
首页 >  Golang >  Go问答

如何处理 gosec linter 警告:通过变量潜在的文件包含

来源:stackoverflow

时间:2024-04-17 16:00:35 409浏览 收藏

从现在开始,我们要努力学习啦!今天我给大家带来《如何处理 gosec linter 警告:通过变量潜在的文件包含》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!

问题内容

如何解决 gosec linter 的以下警告:

::warning: potential file inclusion via variable,medium,high (gosec)

linter 在此函数的第一行警告我:

func File2lines(filePath string) ([]string, error) {
    f, err := os.Open(filePath) //Warning here
    if err != nil {
        return nil, err
    }
    defer f.Close()
    return linesFromReader(f)
}

我尝试阅读有关本地文件包含的内容,但看不出它如何适用于此处。


解决方案


路径从哪里来?如果您不确定它永远不会有用户输入,最好在使用前清理它并使用已知的前缀,例如:

filepath = filepath.join(basepath,filepath.clean(filepath))
f, err := os.open(filepath)

这应该可以解决投诉问题。无论如何,即使您认为现在是安全的,以防万一以后有人将您的函数与用户数据一起使用,这也是一个合理的预防措施。

如果您使用变量指定文件路径,则存在意外执行的风险将指定文件路径。因此,您应该使用 filepath.clean() 来清理可能的坏路径。

一个简单的解决方案:

f,err := os.Open(filepath.Clean(fname))

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《如何处理 gosec linter 警告:通过变量潜在的文件包含》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>