URL 中的电子邮件地址

Posted

技术标签:

【中文标题】URL 中的电子邮件地址【英文标题】:Email addresses inside URL 【发布时间】:2013-12-22 09:48:03 【问题描述】:

在 URL 中使用电子邮件地址是否安全? 我的意思是说,一个网络应用程序有一个注册用户“Bob”,并且 Bob 已经通过使用他的电子邮件 => Bob@hisemail.com 进行了注册。现在您的意见是,应用程序接受和处理//application.com/Bob@hisemail.com 上的 GET 请求以及每个用户的相同类型的 URL 是否安全?

【问题讨论】:

【参考方案1】:

我认为这不是一个好主意。首先,电子邮件包含需要进行 URL 编码的特殊字符,这样它们就不会与系统字符混淆(例如,对于 FTP 服务器,您可以传递这样的用户名ftp://user:pass@test.com)。

另外,从用户的角度来看,我不喜欢它,因为在这种情况下,我的电子邮件将保留在浏览器历史记录中。

【讨论】:

在一个固定编码的应用程序中,第一个点是无效的。 (另外,@ 在第一个/ 之后不需要编码。)不过,第二个有效【参考方案2】:

基本上,这取决于您喜欢还是讨厌您的用户。当您按照您的建议进行操作时,这些 URL 将在网络上的 html 页面上传播。不一定限于您自己的网站,因为人们可能会链接到它。

当您的网页获得足够的吸引力以变得重要时,垃圾邮件机器人的爬虫作者会注意到并向其爬虫添加规则以从 URL 中提取电子邮件地址。甚至可能没有必要,因为一些愚蠢的正则表达式可能已经找到了没有适应的电子邮件。

然后,您用户的电子邮件地址将出现在垃圾邮件发送者的列表中,并且委婉地说,会收到“不需要的广告”。 (这些电子邮件列表也将具有相当高的价值,因为它们被“验证”为真实的、现有的。)

您在这里所做的是泄露用户信任您的私人身份信息。除非您的用户告诉您,否则永远不要公开它!

从技术角度来看,你可以去做。

【讨论】:

嗯,您的回答似乎合乎逻辑且非常正确。但整个事情的开始是因为我爱我的用户,我不想给他们像 //webApp/12345 或 //webApp/users/12345 这样的 URL。没有人喜欢或记得 ID:P 是的,我为这个问题 +1 了,因为这是一个很好的问题。但问题仍然存在,尤其是电子邮件地址实际上是相当私人的信息。这就是为什么现在许多服务都要求提供电子邮件用户名,让您同时使用两者登录但只显示后者。 您可以通过查看 Facebook 来了解电子邮件的实用性。是的,that 隐私是 20 世纪的网站。如果您尝试发送邮件user@facebook.com,他们的邮件服务器会检查您的邮件地址是否可以这样做并拒绝邮件,如果您不是电子邮件所有者的朋友。 答案是假设有问题的 URL 是可抓取的(出现在公共 html 文件上)。我仍然可以爱我的用户,并且有一个 API 端点可以在路径中接收电子邮件 一点也不。这个技巧也适用于反向。任何恶意行为者都可以花几美元获得一份包含数百万现有电子邮件地址的列表。然后他可以开始使用所述列表查询您的服务以找到那些给出积极响应的服务。突然间,他有了一个电子邮件列表,其中也有您网站上的帐户。【参考方案3】:

在这种情况下,电子邮件地址可以与请求参数一起用作GET方法,例如:

// application.com/file_name?email=Bob@hisemail.com

此选项更安全,可能会被使用。

【讨论】:

好吧,我不是在问怎么做,但谢谢你:) 我更喜欢 .../email 格式,因为它看起来更干净。问题是从长远来看会有什么后果?我想到了诸如垃圾邮件、安全问题之类的词,但我希望有经验的人发表一些意见。 当我们使用重写模式时,所以不建议在 url 中使用特殊字符,所以作为您使用的表单,我认为它没有正确粘贴或清理

以上是关于URL 中的电子邮件地址的主要内容,如果未能解决你的问题,请参考以下文章

php正则表达式验证(邮件地址Url地址电话号码邮政编码)

单击TextView中的电话号码或电子邮件地址时出错

阻止 Gmail 为 URL 和电子邮件地址创建链接

Azure 订阅 URL 包含其他管理员的电子邮件地址?

markdown Feathersjs挂钩根据用户的电子邮件地址获取Gravatar URL

使用 Microsoft Graph API 时重定向 URL 地址不正确