在电子邮件中使用协议相对 URL 是不是安全?

Posted

技术标签:

【中文标题】在电子邮件中使用协议相对 URL 是不是安全?【英文标题】:Is it safe to use protocol relative URL in email?在电子邮件中使用协议相对 URL 是否安全? 【发布时间】:2013-05-27 23:39:00 【问题描述】:

目前已有关于在 html 中使用协议相对 URL 的讨论 [1],但是电子邮件呢?

电子邮件客户端或 Gmail 等服务提供商在 HTML 电子邮件中使用时会去除或修改协议相关 URL 吗?

[1]Can I change all my http:// links to just //?

【问题讨论】:

【参考方案1】:

我通过 Gmail 发送了一封包含以下内容的电子邮件:

<a href="//ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js">link</a>

并且它未经修改就被接收了。当我右键单击链接复制链接地址时,Chrome 会在其前面添加 https:(因为 Gmail 使用安全 HTTP),但是当我检查元素的 HTML 时,它会显示我编写的 &lt;a&gt; 标签。

电子邮件服务器更改电子邮件内容是不正常的。

省略该协议旨在让网络浏览器在相同内容的安全版本和不安全版本之间进行选择。如果您通过 https 加载一个页面并且它包含一个以 http 开头的 src 的图像,浏览器会警告用户加载不安全的内容是危险的——这是一个令人困惑和令人担忧的消息。如果您通过 http 加载页面,并且该页面包含以 https 开头的 src 的图像,则可以防止缓存以及其他低效率。

折衷方案是允许浏览器加载具有与加载它的页面相匹配的安全性的内容——不安全页面的效率;完全保证安全页面的安全性。

但电子邮件客户端总是会警告嵌入式内容(图像、脚本等),这意味着省略协议没有任何好处。

此外,非浏览器电子邮件客户端没有协议开始。它下载信息,然后从磁盘加载。如果您真的想让电子邮件客户端选择加载具有加载电子邮件的安全级别的嵌入内容,您应该让客户端在同一台计算机上查找信息。 (他们实际上会假设// 表示file:///。)

那么在电子邮件中放入// URI 是否安全?我会说这没有意义;因此,对于非浏览器客户端来说,还没有一种标准的方式来处理它,这意味着您正在查看未定义的行为。

最好根据 URI 标识的信息的敏感性来选择协议。它是专有财务数据图表吗?使用 https。是乐猫吗?使用 http。

【讨论】:

我在使用 Gmail 和 html 电子邮件中的图片时遇到了问题。带有指向相关协议的 src 的图像(如“//example.blob.core.windows.net/example.gif”)被更改为没有 src 属性的图像。将 src 更改为绝对协议(通过添加 https: - 像 example.blob.core.windows.net/example.gif)后,图像会显示在 Gmail 中。 弗兰克的解释直到今天仍然是正确的。我不确定 Google Image Proxy 更新的确切时间,但这和@saurabh Chandra Patel 的答案是正确的。希望我早点找到这个。在我们的例子中,源标签在 Gmail、Yahoo 邮件和其他邮件中被剥离;我们使用回形针 gem,我们的设置使用协议相关资产来支持 IE8(现在 Microsoft 不支持),并且我们的电子邮件在某个地方被剥离了一个空的 src 属性。希望这个问题在 Google 搜索结果中的排名更高。【参考方案2】:

不,在电子邮件中使用协议相对 URL 是不安全的。因为它改变了协议,因此浏览器可以从网站告诉它使用的任何协议中获取资源。

但一些电子邮件客户端(尤其是 Outlook,像往常一样)不会尝试使用 HTTP 或 HTTPS 作为协议。相反,他们将使用 file:// 协议并假设您引用的资源在本地计算机上。但它不会。所以不要在电子邮件中使用这些。 您必须确保您请求的服务器能够通过 HTTP 和 HTTPS 提供内容。否则,您最终可能会从不安全或不存在的服务器端口获取内容。

IE6 不知道如何处理这个问题。如果您关心支持 Internet Explorer 6,那么您不应该使用这些。

IE7-8 支持协议相对 URL,但它们最终会获取资源两次。一次来自 HTTP,一次通过 HTTPS。这可能会使事情变慢一点,但在我看来,除了使用 IE7-8 的人之外,这对任何人来说都不是什么大问题,如果你使用的是 IE,你还有更重要的事情要担心。

它取决于浏览器,因此取决于您使用的浏览器 GMAIL 在 crome 中可以正常工作,但在 IE6 中却不行。

【讨论】:

根据@dave-ward 的这个答案,IE6 确实知道如何处理协议相关 URL:***.com/a/4832046/533460 当您将其他复制粘贴到您的答案中时,可以参考他们billpatrianakos.me/blog/2013/04/18/protocol-relative-urls

以上是关于在电子邮件中使用协议相对 URL 是不是安全?的主要内容,如果未能解决你的问题,请参考以下文章

URL 中的电子邮件地址

电子商务安全

使用 Guardian 创建电子邮件验证 URL

相对于 mailAddress 类,Regex 是不是稳定用于电子邮件验证?

URL常见协议

使用用户 ID 代替电子邮件发送密码恢复令牌是不是安全?