使用Python清理PDF用户输入

时间:2019-02-07 04:54:14

标签: python pdf sanitization

我的应用程序允许用户上传PDF文件。这些文件看起来应该相对相似,并且是相同格式的变体。我了解PDF有时可能包含恶意内容,例如在Adobe Reader或类似软件中打开时将执行的Javascript。

我在线上看到了一些软件包,例如PDFiD可以帮助您查看可能有问题的PDF。似乎可以使您看到所有基础内容类型。我目前的想法是确定文档应包含的内容类型,然后阻止文件中包含异常内容的文件上传。

是否有使用Python自动清除恶意内容PDF并删除其中可能包含的所有可执行代码的简单方法?我知道有一种PDF / A格式可以允许这样的事情,但是像PyPDF2这样的软件包是否具有清理功能?

1 个答案:

答案 0 :(得分:1)

我相信这是答案:

from pdfid import PDFiD
new_file = PDFiD('path/to/file', disarm=True)

将采用PDF的元素

<Keywords>
    <Keyword Count="56" HexcodeCount="0" Name="obj"/>
    <Keyword Count="56" HexcodeCount="0" Name="endobj"/>
    <Keyword Count="32" HexcodeCount="0" Name="stream"/>
    <Keyword Count="32" HexcodeCount="0" Name="endstream"/>
    <Keyword Count="1" HexcodeCount="0" Name="xref"/>
    <Keyword Count="1" HexcodeCount="0" Name="trailer"/>
    <Keyword Count="1" HexcodeCount="0" Name="startxref"/>
    <Keyword Count="8" HexcodeCount="0" Name="/Page"/>
    <Keyword Count="0" HexcodeCount="0" Name="/Encrypt"/>
    <Keyword Count="0" HexcodeCount="0" Name="/ObjStm"/>
    <Keyword Count="0" HexcodeCount="0" Name="/JS"/>
    <Keyword Count="0" HexcodeCount="0" Name="/JavaScript"/>
    <Keyword Count="0" HexcodeCount="0" Name="/AA"/>
    <Keyword Count="0" HexcodeCount="0" Name="/OpenAction"/>
    <Keyword Count="0" HexcodeCount="0" Name="/AcroForm"/>
    <Keyword Count="0" HexcodeCount="0" Name="/JBIG2Decode"/>
    <Keyword Count="0" HexcodeCount="0" Name="/RichMedia"/>
    <Keyword Count="0" HexcodeCount="0" Name="/Launch"/>
    <Keyword Count="0" HexcodeCount="0" Name="/EmbeddedFile"/>
    <Keyword Count="0" HexcodeCount="0" Name="/XFA"/>
    <Keyword Count="0" HexcodeCount="0" Name="/Colors &gt; 2^24"/>
</Keywords>

如果可疑,则将所有内容计数为零