这是一个安全问题。假设用户A已登录example.com,然后他下载由example.com托管的PDF,并在浏览器中查看该PDF。嵌入在PDF中的JavaScript是否能够访问example.com的API,就像登录用户A一样?
或者换句话说,源自PDF中的JavaScript的API调用是否会通过浏览器可能为该域保留的会话cookie发送到服务器?
答案 0 :(得分:1)
Acrobat JavaScript中有一些与URL相关的命令。还有可以检索的路径信息。
与URL相关的命令是(列表可能不完整)getURL()
,launchURL()
和submitForm()
。它们都可以基本上将数据发送到任何服务器,只要该服务器可以对数据执行某些操作。是否在浏览器中查看PDF无关紧要。这确实是一个安全问题。
但是,对于多个版本,至少Adobe产品内置了一个屏障,要么完全禁止,要么允许联系其他服务器的权限,而不是文档的来源。这意味着,在提供者和用户背后做一些事情是非常困难的。
答案 1 :(得分:0)
他们可以互动,但只能通过HostContainer
对象进行互动。
此对象管理PDF文档与文档之间的通信 文档包含在其中的相应主机容器, 例如HTML页面。指定了文档的主机容器 由Doc hostContainer属性。 Embedded PDF对象提供 容器对象模型的相应API 应用
HostContainer
仅限于postMessage
与托管页面进行通信的方法:
将消息异步发送到主机的消息处理程序 PDF文档的容器。要传递此消息, 主机容器(例如,HTML页面中的元素)必须 已通过设置其messageHandler注册通知 属性。消息传递给的onMessage方法 的MessageHandler。
因此它不像HTML文档那样完全访问DOM。它更像是从另一个文档加载的文档,或null
来源(IFrame中动态创建的文档),它可以使用HTML5 postMessage
功能以安全的方式与其父框架进行通信。
documentation中还提到了submitForm
方法。
将表单提交到指定的URL。要调用此方法,您必须是 在Web浏览器中运行或使用Acrobat Web Capture插件 安装。
目前尚不清楚Cookie是否包含在请求中,或者是否设置了referer
标头。如果两者都为真,那么如果站点使用referer
检查作为防御机制,则可以完成CSRF攻击。