0

我开发了一种工作申请网站,但我现在才意识到,通过允许上传 PDF 文件,我可能会收到包含加密数据、活动内容(例如 JavaScript、PostScript)和外部参考的 PDF 文档。

我可以用什么来清理或重建用户上传的每个 PDF 文件的内容?

我希望稍后审查上传简历的公司能够从浏览器中打开简历,而不会使他们处于危险之中。

4

1 回答 1

0

在更安全的模式下使用 GhostScript 可以对 PDF 进行展平或清理的最简单方法只需要一次通过:-

对于 Windows 用户,它将像使用新的 9.55 命令一样“简单”

"c:\path to gs9.55\bin\GSwin64c.exe" -sDEVICE=pdfwrite -dNEWPDF -o "Output.pdf" "Input.pdf"

对于其他人,将 gs9.55\bin\GSwin64c 替换为 9.55 版 GS 命令

这不是一个快速的方法,例如 40 ppm 左右并不少见,因此 4 页大约需要 6 秒才能重新打印,但是,400 页文档可能需要 10 分钟。

优点是一旦删除任何冗余内容,文件大小通常会更小。图像和字体重建可以节省存储空间,例如,一个 100 MB 的文件可以减少到 30 MB,但这是一个普遍的好处,而不是一个目标。

JavaScript 操作通常会被丢弃,但通常会保留诸如书签之类的链接,因此请小心,因为结果仍然可能包含恶意超链接。

下一个最佳建议是通过 PostScript 两次通过,如此处所述https://security.stackexchange.com/questions/103323/effectiveness-of-flattening-a-pdf-to-remove-malware

GS[win64c] -sDEVICE=ps2write -o "%temp%\temp.ps" "Input.pdf"
GS[win64c] -sDEVICE=pdfwrite -o "Output.pdf" "%temp%\temp.ps"

但是没有证据表明它与单线方法有任何不同或更有效。

最后,最严格的方法是将 pdf 拆分为仅图像页面,然后将图像拼接回单个 pdf 并同时运行 OCR 以重建可搜索的 PDF(删除书签)。这也可以使用启用了 Tesseract 的 Ghostscript 来完成。

注意:- 由于 pdf 阅读器的本机能力,可见的外部超链接可能仍会被重新激活。

于 2021-09-28T02:36:59.740 回答