亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何處理 gosec linter 警告:可能通過變量包含文件

如何處理 gosec linter 警告:可能通過變量包含文件

Go
aluckdog 2023-04-04 14:43:09
如何解決來自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)}我曾嘗試閱讀有關本地文件包含的內容,但看不到它在此處的適用性。
查看完整描述

3 回答

?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

路徑從何而來?如果您不確定它永遠不會有用戶輸入,最好在使用前清理它并使用已知前綴,例如:

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

那應該解決投訴。無論如何,這是一個合理的預防措施,即使您現在認為它是安全的,以防以后有人將您的功能與用戶數據一起使用。


查看完整回答
反對 回復 2023-04-04
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

沒有人說 linter 很聰明。孤立地看功能,不可能說是否存在安全問題。filePath如果使用用戶提供且未充分驗證的a 調用該函數,并且它在可以讀取用戶無法以其他方式讀取的文件的上下文中運行(例如,在具有提升權限的程序中,或在遠程服務器上) ,那么就有一個可能的問題。否則,對警告唯一要做的就是抑制或忽略它。



查看完整回答
反對 回復 2023-04-04
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

如果使用變量指定文件路徑,則可能會指定非預期的文件路徑。因此,您應該使用filepath.Clean()來清理可能的壞路徑。

一個簡單的解決方案:

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


查看完整回答
反對 回復 2023-04-04
  • 3 回答
  • 0 關注
  • 396 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號