【发布时间】:2017-10-23 18:15:16
【问题描述】:
我有从外部来源发送的 PDF,我希望用户能够通过 Web 服务查看。
PDF 是通过 .NET Core 服务检索的,该服务从数据库中获取它们并将它们输出为 PDF 文件。
问题在于恶意用户可以将 JS 放入 PDF 中。因为它们对浏览器来说似乎来自同一来源,所以 JS 可以对应用程序的其余部分执行 XSS 攻击。
我不需要保留任何 JS 功能,但我也希望尽可能多地保持 PDF 不变。
有没有办法使用 .NET Core 将 JS 从 PDF 中剥离出来并保持不变?
另外有什么方法可以指定在打开网页中嵌入的 PDF 文件时不执行任何 JS(例如使用<iframe src="file.pdf" 或<object type="application/pdf" data="file.pdf")。我不能依赖拥有额外 PDF 扩展名的用户,它需要使用 vanilla 浏览器。
【问题讨论】:
-
您可以使用任何适当的通用PDF库来删除js。
-
@mkl 很酷,在答案中发布一个与 .NET Core 一起使用的功能示例,您可以得到一些代表。
-
您选择哪个 .NET Core PDF 库?我不能推荐一个,因为 A 我还没有处理过 .NET Core,所以没有任何 PDF 库在那里正常工作的经验,并且 B 库推荐被关闭-这里的主题...
-
@mkl 啊,所以你认为我是在寻求产品推荐?因此,否决/关闭投票?虽然那里有很多 PDF 库,但大多数都与 .NET Core 不兼容,并且只有其中的一部分可以进行我所询问的更改。即便如此,这也不是微不足道的(暴露 PDF 文件格式的内部结构距离知道可以删除的内容还有很长的路要走)。我不是在问哪种方式是最好的,我是在问它是否实际上可能,如果它是如此简单以至于许多可能的库中的任何一个都可以做到,那么请随时提供一个库-不可知论者的答案。
-
Bobrovsky 和 Mihai Iancu 的回答都解释了如何解决该任务,但正如您所见,他们都在此过程中宣传特定的库。所以是的,除了有效地帮助特定任务之外,您的问题是要求图书馆推荐,这反过来很可能引发反对票和关闭票。 (我也不是,我希望推动您宣布选择 PDF 库...;)
标签: javascript pdf .net-core