如何避免路径遍历安全漏洞

How to avoid path traversal security vulnerability

我有一个 python 网络应用程序,它接受从 URL 到 PDF 文件的 http URL。作为应用程序的一部分,它需要使用 ghost 脚本将 PDF 转换为 TIFF 图像。为此,PDF 需要保存在本地。所以要做到这一点,我使用 urllib 这样的:

testfile = urllib.URLopener()
pdf_destination = os.path.join(self.options.storefolder, self.options.uniquecode+".pdf")
testfile.retrieve(pdfurl, pdf_destination) //Fortify vuln. found here

这工作正常,但是,Fortify SCA 给出了 "Path Manipulation" 的严重漏洞。有办法解决这个问题吗?我应该只确保 pdfurl 包含有效的 pdf 文件名吗?或者有更好的方法来解决这个问题吗?

Ghostscript 不需要本地保存的文件,它可以接受通过标准输入传输的数据。然后它创建文件的本地临时副本(因为 PDF 文件需要随机访问)但我认为这是可以接受的。

当然,这仍然会给您留下通过标准输入将 PDf 文件传输到 Ghostscript 的问题,我不知道您会怎么做。