如何在 HTML 电子邮件中添加私人图片 link

How to add private image link in HTML email

我有一个 Web 服务器,可以访问 public 和私有图像。任何人都可以通过 url 获得 public 图像,例如 https://example.com/public/images/some-public-image.jpg。但是对于私有图像,只有图像的所有者才能通过 link https://example.com/private/images/some-private-image.jpg 访问它们,请求需要在 cookie 中包含经过身份验证的用户的会话 ID。

要在电子邮件内容中添加 public 图片,我在电子邮件 HTML 内容中使用 <imag src="https://example.com/public/images/some-public-image.jpg" />。但是不能使用私有的link,比如<img src="https://example.com/private/images/some-private-image.jpg" />,因为需要认证。

在电子邮件内容中添加私人图片的常见做法是什么?

可以像这样在 link 中嵌入 JWT 令牌吗

<img src="https://example.com/private/images/some-private-image.jpg?token=AdflkndidgX..." />

服务器然后在返回图像之前检查令牌有效性。

这种方法有安全问题吗?

如果您的令牌仅对该图像有效,并且不能用于其他范围(例如与其他 API 进行身份验证),则使用它不是问题。问题是所有的认证都是基于图像link的知识。因此,如果您使用名称的 guid 生成图像,它是相同的。

但是,您并没有识别打开图像的用户,您只是在检查是否有人知道 link。窃取 link 的攻击者可以在没有任何凭据知识且无需进行访问的情况下查看图像。您确定这是您希望应用程序具有的行为吗?最好的方法是发送一封没有敏感信息(图片)的邮件,并强制用户点击 link 来验证他的身份。