如何防止 iframe 显示电子邮件以加载图像和其他电子邮件跟踪器?
How can I prevent an iframe displaying an email to load images and other email trackers?
我们有一个 Web 管理面板,代理可以在其中查看与客户的对话。
这些对话是通过 IMAP 连接导入普通电子邮件的结果。我们获取 "untouched" 邮箱文件并将它们存储在数据库中。然后我们 post- 处理文件以按 "from"、"to"、"date" 等索引。
到此为止,好了。我们可以查找与客户有关的所有电子邮件并随意呈现。
然后,当代理在 Web 管理面板中查找客户并打开它时,会显示完整的电子邮件对话。我们在 iframe
中显示电子邮件的 HTML 版本(如果 html 版本不存在,则显示文本版本)。 90% 的客户发送 HTML.
会发生什么?代理在我们的网络中打开电子邮件后,iframe
加载 "full html" 并呈现它。这使得 "remote loading"(图像、声音、样式,如果有的话)被下载。这允许客户 "track" 如果我们通过将跟踪 ID 附加到资产来打开电子邮件(典型 http://track.example.com/image.jpg?id=123456789)
我尝试了 iframe
html 标签的 "sandbox" 属性,但没有成功(它仍然下载图像)。
问题
如何以编程方式告诉 iframe
不加载任何远程内容,只渲染初始 HTML 而无需任何远程调用?
Mozilla 的 iframe 文档列出了 的所有可用属性:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
如果您查看 "sandbox",则没有针对图像或其他包含的限制,只是对 运行 JavaScript 之类的限制。没有其他属性会限制图像和包含。
要解决图像问题并包含在您的 HTML 中,您需要在发送前在服务器上或在到达后在客户端中过滤 HTML。
服务器:
- 在将其存储到数据库之前。
- 在检索 HTML 和 returns 到 iframe 的代码中。
客户:
- 使用 AJAX 填充带有 HTML 的 iframe,并使用过滤 a 的代码
回复。使用这种方法,您还可以使用 div 而不是
如果 iframe 更适合您的布局。
- 如果您的所有用户都将使用 Chrome 或 Firefox,您可以考虑编写一个浏览器扩展程序
我们有一个 Web 管理面板,代理可以在其中查看与客户的对话。
这些对话是通过 IMAP 连接导入普通电子邮件的结果。我们获取 "untouched" 邮箱文件并将它们存储在数据库中。然后我们 post- 处理文件以按 "from"、"to"、"date" 等索引。
到此为止,好了。我们可以查找与客户有关的所有电子邮件并随意呈现。
然后,当代理在 Web 管理面板中查找客户并打开它时,会显示完整的电子邮件对话。我们在 iframe
中显示电子邮件的 HTML 版本(如果 html 版本不存在,则显示文本版本)。 90% 的客户发送 HTML.
会发生什么?代理在我们的网络中打开电子邮件后,iframe
加载 "full html" 并呈现它。这使得 "remote loading"(图像、声音、样式,如果有的话)被下载。这允许客户 "track" 如果我们通过将跟踪 ID 附加到资产来打开电子邮件(典型 http://track.example.com/image.jpg?id=123456789)
我尝试了 iframe
html 标签的 "sandbox" 属性,但没有成功(它仍然下载图像)。
问题
如何以编程方式告诉 iframe
不加载任何远程内容,只渲染初始 HTML 而无需任何远程调用?
Mozilla 的 iframe 文档列出了 的所有可用属性:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
如果您查看 "sandbox",则没有针对图像或其他包含的限制,只是对 运行 JavaScript 之类的限制。没有其他属性会限制图像和包含。
要解决图像问题并包含在您的 HTML 中,您需要在发送前在服务器上或在到达后在客户端中过滤 HTML。
服务器:
- 在将其存储到数据库之前。
- 在检索 HTML 和 returns 到 iframe 的代码中。
客户:
- 使用 AJAX 填充带有 HTML 的 iframe,并使用过滤 a 的代码 回复。使用这种方法,您还可以使用 div 而不是 如果 iframe 更适合您的布局。
- 如果您的所有用户都将使用 Chrome 或 Firefox,您可以考虑编写一个浏览器扩展程序