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

19

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

当协议相对URL被用于HTML邮件时,邮箱客户端或像Gmail这样的服务提供商是否会剥离或修改它们?

[1] 我能把所有http链接改成//吗?

2个回答

22

我通过Gmail发送了一封邮件,内容如下:

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

并且它没有被修改。当我右键单击链接以复制链接地址时,Chrome在其前面添加了https:(因为Gmail使用安全HTTP),但是当我检查元素的HTML时,它显示<a>标记与我编写的一样。

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

省略协议旨在让Web浏览器在安全和非安全版本的相同内容之间进行选择。如果您通过Https加载页面,并且其中包含以http开头的源图像,则浏览器会警告用户加载不安全的内容-混淆和令人担忧的消息。如果您通过http加载页面,并且它包含以https开头的源图像,则这将防止缓存等无效率问题。

妥协的方法是允许浏览器加载与加载它的页面相匹配的安全内容-对于不安全的页面而言高效,对于安全的页面则完全保证安全性。

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

此外,非浏览器电子邮件客户端根本没有协议。它下载信息,然后从磁盘加载它。如果您真的想让电子邮件客户端选择使用加载电子邮件时使用的安全级别来加载嵌入式内容,则可以让客户端在同一台计算机上查找信息。 (他们实际上会通过假设//意味着file:/// 来执行此操作。)

那么在电子邮件中放置一个// URI是否安全?我认为这没有意义; 因此,非浏览器客户端处理它的标准方法尚未成为标准,这意味着您正在查看未定义的行为。

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


4
我在使用Gmail发送HTML邮件时遇到了问题。那些源地址指向相对协议(比如 "//example.blob.core.windows.net/example.gif")的图片被转化成没有src属性的图片。将这些图片的源地址改为绝对协议(如添加"https:" - 如 https://example.blob.core.windows.net/example.gif),就可以在Gmail中正常显示这些图片。 - Frank van Eykelen
弗兰克的解释至今仍然是正确的。我不确定谷歌图像代理更新的确切时间,但@saurabh Chandra Patel的回答非常准确。真希望我早点发现这个问题。在我们的情况下,在Gmail、Yahoo邮件和其他邮件中,源标签被剥离了;我们使用纸夹宝石来支持IE8(现在微软不再支持),我们的设置使用协议相对资产,而我们的电子邮件在某个地方被剥离了,具有空src属性。希望这个问题在谷歌搜索结果中排名更高。 - Michael

16
不安全在电子邮件中使用协议相对URL,因为它会更改协议,以便浏览器可以从站点告诉它使用的任何协议中获取资源。但是一些邮件客户端(尤其是Outlook)不会尝试使用HTTP或HTTPS协议,而是使用file://协议,并假定您引用的资源位于本地计算机上,但实际上并不是这样。因此,请勿在电子邮件中使用这些内容。您必须确保您请求的服务器能够通过HTTP和HTTPS都提供内容。如果不能,则可能会从未经保护或不存在的服务器端口提取内容。IE6不知道如何处理这个问题。如果您关心支持Internet Explorer 6,则不应使用此类内容。IE7-8支持协议相对URL,但它们会两次获取资源:一次是HTTP,一次是HTTPS。这可能会稍微减慢速度,但在我看来,这对除使用IE7-8的人外没有太大问题,而且如果您使用IE,还有更重要的事情需要担心。这取决于浏览器,因此它取决于您使用的浏览器,GMAIL在Chrome中可以正常工作,但无法在IE6中使用。

根据@dave-ward的回答,IE6确实知道如何处理协议相对URL:https://dev59.com/questions/9m445IYBdhLWcg3wfKYZ#4832046 - Frank van Eykelen
1
当你将其他内容复制粘贴到你的答案中时,可以给它们提供参考链接。http://billpatrianakos.me/blog/2013/04/18/protocol-relative-urls/ - super1ha1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接