【发布时间】:2020-03-24 11:01:06
【问题描述】:
在任何平台上验证给定文件路径是否位于基本路径中的 Go 中最安全和最安全的方法是什么?
路径最初以字符串形式提供并使用“/”作为分隔符,但它们是用户提供的,我需要假设 大量恶意输入。我应该执行哪种路径规范化以确保例如像“..”这样的序列被评估,所以我可以安全地检查基本路径?在各种文件系统和平台上需要注意哪些例外情况?在这方面,哪些 Go 库应该是安全的?
结果将被提供给os.Create 和sqlite3.Open 等外部函数,任何未能识别出基本路径已被留下的行为都将构成安全违规。
【问题讨论】:
-
你尝试了什么?为什么 filepath.Clean 不足以满足您的目的。你如何定义“最安全”?
标签: file validation go path