Как обрабатывать предупреждение GoSinter Linter: потенциальное включение файла через переменную - PullRequest
0 голосов
/ 13 сентября 2018

Как мне решить следующее предупреждение от gosec linter:

::warning: Potential file inclusion via variable,MEDIUM,HIGH (gosec)

Линтер предупреждает меня в первой строке этой функции:

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)
}

Я попытался прочитать о включении локального файла, но не могу понять, как это применимо здесь.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Откуда берется этот путь?Если вы не уверены, что он никогда не сможет ввести пользователя, лучше очистить его перед использованием и использовать известный префикс, например:

filePath = filepath.Join(basePath,filepath.Clean(filePath))
f, err := os.Open(filePath)

Это должно исправить жалобу.В любом случае, это разумная мера предосторожности, даже если вы считаете, что сейчас это безопасно, на случай, если позже кто-то использует вашу функцию с пользовательскими данными.

0 голосов
/ 13 сентября 2018

Никто не говорил, что линтер был умным .Глядя на функцию в отдельности, невозможно сказать, есть ли проблема безопасности.Если функция вызывается с filePath, предоставленным пользователем и недостаточно проверенным, и она запускается в контексте, где она может читать файлы, которые пользователь не мог бы сделать иначе (например, в программе сповышенные привилегии (или на удаленном сервере), , затем , вероятно, существует проблема.В противном случае единственное, что нужно сделать с предупреждением, - это подавить или игнорировать его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...