我的应用程序允许用户上传PDF文件。这些文件看起来应该相对相似,并且是相同格式的变体。我了解PDF有时可能包含恶意内容,例如在Adobe Reader或类似软件中打开时将执行的Javascript。
我在线上看到了一些软件包,例如PDFiD可以帮助您查看可能有问题的PDF。似乎可以使您看到所有基础内容类型。我目前的想法是确定文档应包含的内容类型,然后阻止文件中包含异常内容的文件上传。
是否有使用Python自动清除恶意内容PDF并删除其中可能包含的所有可执行代码的简单方法?我知道有一种PDF / A格式可以允许这样的事情,但是像PyPDF2这样的软件包是否具有清理功能?
答案 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 > 2^24"/>
</Keywords>
如果可疑,则将所有内容计数为零