# PII 泄露：注册流程称电子邮件“永不公开显示”，却将其用于 Gravatar

**URL:** <https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124>\
**Category:** Feature\
**Created:** [2020年一月29日 22:44 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124 "2020-01-29T22:44:53Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![mcc](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/mcc/32/168180_2.png) [@mcc](https://meta.discourse.org/u/mcc)\
**Post date:** [2020年一月29日 22:44 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124/1 "2020-01-29T22:44:53Z")

</div>

在 Discourse 的默认安装中，注册面板会要求输入电子邮件地址。系统提示该邮箱“不会向公众显示”。然而，在完成注册流程、用户尚未有机会编辑个人资料或进行任何操作之前，该邮箱地址即被用于从 Gravatar 获取头像。

我认为这构成了个人身份信息的泄露。原则上，Gravatar 头像可与某人的真实身份及其邮箱地址进行关联。虽然用户有机会更改头像，但在用户尚未进行任何操作之前，他人仍有可能通过公开的“用户”列表查看该账户及其关联的头像。Gravatar 支持是一项很棒的功能，但问题在于 Discourse 明确通过注册框中的文字（“不会向公众显示”）营造了一种邮箱地址将保持私密的预期。

我认为最佳的修复方式是：要么修改注册框的文字以调整这种预期，要么增加一个复选框或确认步骤，用于确认“是否通过 Gravatar 获取头像”。

我在 Letsencrypt 论坛上遇到了此问题，但通过测试可以确认，[try.discourse.org](http://try.discourse.org) 和 [meta.discourse.org](http://meta.discourse.org) 论坛也存在相同的行为。

---

<div class="post-metadata">

**Author:** ![codinghorror](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/codinghorror/32/110067_2.png) [@codinghorror](https://meta.discourse.org/u/codinghorror)\
**Post date:** [2020年一月29日 22:50 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124/2 "2020-01-29T22:50:52Z")

</div>

你不能将“公众”定义为 Gravatar，尤其是因为请求是通过加密的 HTTPS 直接从服务器发送到 Gravatar 服务器的。而且，使用的是邮箱的哈希值，不是吗？

---

<div class="post-metadata">

**Author:** ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)\
**Post date:** [2020年一月29日 23:35 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124/3 "2020-01-29T23:35:06Z")

</div>

> [@codinghorror](#):
>
> 难道没有使用电子邮件的哈希值吗？

是的：

> <https://github.com/discourse/discourse/blob/main/app/models/user_avatar.rb#L23>

@mcc 在阅读了代码后，你仍然认为这是个人身份信息（PII）泄露吗？

---

<div class="post-metadata">

**Author:** ![downey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/downey/32/166878_2.png) [@downey](https://meta.discourse.org/u/downey)\
**Post date:** [2020年一月30日 04:04 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124/4 "2020-01-30T04:04:22Z")

</div>

我推测这里的个人身份信息（PII）是指图片本身的内容。当您使用电子邮件地址注册 Discourse 站点时，您可能不希望公众知道您的身份，尤其是系统明确说明您的电子邮件将是私有的。

换句话说，我使用某个随机用户名注册以保护隐私，但使用我常用的电子邮件地址。根据“永不向公众显示”的说明，我不期望我的头像会立即与该账户关联并被任何人看到。

---

<div class="post-metadata">

**Author:** ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)\
**Post date:** [2020年一月30日 04:34 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124/5 "2020-01-30T04:34:43Z")

</div>

> [@downey](#):
>
> 我猜这里的个人身份信息（PII）就是图片本身的内容。当你用电子邮件地址注册 Discourse 站点时，你可能不希望公众知道你是谁，尤其是系统明确说明你的电子邮件是私有的。

我觉得这很难理解。

你把图片上传到了 Gravatar，并将其与你的电子邮件关联，这样你在互联网上任何使用该邮箱的地方都会显示这张图片。如果你不希望它到处跟随，就不要把它上传到 Gravatar。

🥴

---

<div class="post-metadata">

**Author:** ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)\
**Post date:** [2020年一月30日 05:00 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124/6 "2020-01-30T05:00:05Z")

</div>

同意，而且 Gravatar 并非唯一标识。

根据定义，Gravatar 不属于个人身份信息（PII），它属于公开的个人身份信息，这是一个独立的类别。哈希值在定义上就是单向的。

任何真正重视隐私的人都不会在所有地方使用同一个与 Gravatar 关联的电子邮件地址。即使是“加号地址”（plus addressing）也能绕过它。

电子邮件地址也被视为公开的个人身份信息，因为在某些情况下，除了姓名之外，它们还可能揭示性别、年龄和地理位置。

---

<div class="post-metadata">

**Author:** ![marianord](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/marianord/32/90502_2.png) [@marianord](https://meta.discourse.org/u/marianord)\
**Post date:** [2020年一月30日 14:59 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124/7 "2020-01-30T14:59:53Z")

</div>

作为折中方案，为头像添加一个可选的退出（或加入）选项，使其不再在 Gravatar 中被搜索，这是否太难实现？

---

<div class="post-metadata">

**Author:** ![supermathie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/supermathie/32/507518_2.png) [@supermathie](https://meta.discourse.org/u/supermathie)\
**Post date:** [2020年一月30日 15:05 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124/8 "2020-01-30T15:05:59Z")

</div>

此站点设置已存在：

> ![image](https://global.discourse-cdn.com/meta/original/3X/b/0/b0bb75c08419499726ec2c0d1cf63aae5c90cc23.png)

---

<div class="post-metadata">

**Author:** ![riking](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/riking/32/170938_2.png) [@riking](https://meta.discourse.org/u/riking)\
**Post date:** [2020年一月31日 06:53 UTC](https://meta.discourse.org/t/pii-leak-signup-flow-says-email-is-never-shown-to-the-public-then-uses-it-for-gravatar/140124/9 "2020-01-31T06:53:48Z")

</div>

Discourse 避免了哈希逆向的标准安全风险以及 Gravatar 访客追踪风险，因为服务器会实际下载图片。

如果您有多个邮箱使用相同的头像（像我一样），除非您是 Gravatar，否则无法确定您是用哪个邮箱注册论坛的。Discourse 不会保存或发布头像历史记录，因此用户的变通方法相当简单（切换回字母头像或上传新图片）。而且，您始终可以手动上传他人的头像。

这似乎并不是一种可靠的攻击方式。
