PyPDF2 在打开不安全文件时是不是采取任何安全措施?

Posted

技术标签:

【中文标题】PyPDF2 在打开不安全文件时是不是采取任何安全措施?【英文标题】:Does PyPDF2 take any safety measures when opening an unsafe file?PyPDF2 在打开不安全文件时是否采取任何安全措施? 【发布时间】:2014-11-19 01:15:37 【问题描述】:

我想使用 PyPDF2,但首先要确保它可以安全使用。我在它的文档中找不到任何东西。我想用它来确保上传的文件是有效的 PDF。用户已经过验证,但我担心他们仍然能够在不知不觉中上传不安全的内容。 PyPDF2 有什么方法可以判断它是不安全的,即使它是 PDF 文件?

来源: https://github.com/mstamy2/PyPDF2

文档: https://pythonhosted.org/PyPDF2/

【问题讨论】:

如果您确定了您所关注的安全风险,这可能会有所帮助。似乎大多数 PDF 安全风险来自在渲染期间执行代码。 (security.stackexchange.com/a/31551/46979 和 security.stackexchange.com/a/31552/46979 是相关的。提到的 javascript 的属性也适用于 Python。) PyPDF2 似乎只是一个 PDF 解析器 和生成器。我怀疑它实际上会呈现内容(因此不会执行代码)。 PyPDF2 能否将文件的一部分评估为 python 或以其他方式执行它的内容? 【参考方案1】:

PyPDF2 有什么方法可以分辨,即使它是 PDF,不安全?

不,因为 PyPDF2 不包含任何安全扫描功能。任何对您的系统有害的内容可能会或可能不会通过 PyPDF 并继续对您的系统造成危险,具体取决于您采取的其他预防措施。

正如 jpmc26 所说,PyPDF 只是一个解析器/生成器,因此 PDF 的内容不太可能对 PyPDF 本身构成安全线程。

【讨论】:

【参考方案2】:

如果您担心 pdf 的有效性,如果您尝试使用 PyPDF2 操作不是有效 pdf 的 pdf,那么它可能会返回错误。至于检查 pdf 的内容,库本身不这样做,但是您可以编写检查某些模式的内容的方法,分析流,并找到其他方法自己检查。最好的方法是自己创建一个无效的 pdf 并找到您想要查找的内容。它也有一些密码验证,虽然老实说我没有处理图书馆的那部分。如果您可以学习如何有效地使用 PyPDF2,它是一个非常强大的工具!

【讨论】:

以上是关于PyPDF2 在打开不安全文件时是不是采取任何安全措施?的主要内容,如果未能解决你的问题,请参考以下文章

如何保证线程安全?

安全是不完整的是啥意思?

php安全篇值过滤用户输入的参数(转)

如何保证集合是线程安全的?

线程安全

如何创建线程?如何保证线程安全?