【问题标题】:Email verification new idea邮箱验证新思路
【发布时间】:2012-02-10 10:11:36
【问题描述】:

我对验证电子邮件有一些不同的想法,而不是向我的客户发送带有唯一消息的邮件来验证我的服务器,我不会给他发送任何内容,而是要求他向我发送邮件,然后我检查发件人和邮件中的唯一消息并验证该电子邮件。

基本上用户会点击一个按钮,一个新的邮箱会打开,所有的数据都已经填写好了,他要做的就是按下发送。

我的问题是:首先这可以工作吗?其次,与具有所有缺点的官方方式相比,它的安全性如何。我只想知道我是否没有打开任何新的安全风险。

【问题讨论】:

  • 首先我会问你你知道 PHP 吗?使用 PHP 非常简单。
  • 你确定你理解我的问题吗?我需要一个可以阅读电子邮件的托管服务的实现。如果你有一个用 PHP 实现它的例子,我会更乐意给它看看
  • 我认为这是不安全的,很容易被Email spoofing规避。您可能会争辩说,可以保护自己免受这种情况的影响,并以某种方式确定电子邮件是否从正确的服务器发送 - 但最终为什么您的解决方案比当前的解决方案更容易或更好?

标签: email verification


【解决方案1】:

因此,不是标准的“请单击此链接以确认您的帐户”,您希望让您的用户在创建他的帐户时发送邮件?

我看不出您的解决方案比原来的解决方案更好。您将不得不收到大量邮件,然后您必须分析其中的信息是否正确。这意味着验证帐户的工作只能在其他地方完成。

原始的:您通过邮件发送一个 url,如果它打开,您将激活用户。例如,可以使用简单的 servlet 来实现该逻辑。您可以在 url 中加密用户的数据库条目,为 servlet 剩下的就是一个简单的数据库查找。

您的:您通过邮件接收身份证明并通过邮件运行您的逻辑。

然而,一个可能的问题是修改发送邮件的地址是可行的。您永远无法确定发送给您的邮件背后是否真的有一个邮件帐户。另一个更危险的缺陷是恶意用户可能会向您正在使用的邮件帐户发送垃圾邮件。在原始解决方案中,可以丢弃任何传入的邮件,但您必须存储和处理它们。

【讨论】:

  • 我的解决方案更好,因为发送邮件需要花钱,而阅读则不需要......但你说得有道理。我的邮件确实可能是恶意用户的垃圾邮件。我怎么能想到一个解决方案。也许我会为每个用户请求创建临时邮件,并在收到第一封邮件或超时后关闭它。
【解决方案2】:

嗯,我看到这里有一点可用性问题和另一个安全问题。让我们按顺序谈谈:

  • 电子邮件验证的经典方法是专门用于验证用户的电子邮件地址。也就是说,验证用户填写的地址是他/她的真实邮箱地址。如果您想验证同样的事情,您必须“让您的用户”从他/她的真实电子邮件地址向您发送电子邮件。因此,您可以使用“电子邮件”链接类型并填写您需要的所有内容,但如果用户在 Internet 俱乐部或公共计算机上怎么办。他不会有任何设置。或者如果他想稍后给你发邮件怎么办?然后怎样呢?这是一个可用性问题。另一个问题是,你让用户有效地写邮件(即使你填写了信息),这是一种额外的步骤。

  • 安全问题。如果用户在注册和其他人通过邮件发送的电子邮件确认之间进行注册怎么办?

【讨论】:

  • 我将使用 mailKey 和电子邮件地址创建一个数据库,并要求我的用户向我发送 mailKey。一旦我得到密钥,我就会取出存储在我的数据库中的邮件,并将其与发件人邮件进行比较,如果我得到匹配,我会将这封邮件标记为已验证!
  • 假设有人想要伤害你未来的用户。他可以通过拦截网页(如果不是 https)或检查用户的浏览器缓存等来获取该唯一密钥。一旦您通过 Internet 发送未加密的内容并将其显示在浏览器中,这可能是一个安全问题。如果您的网站不会做超机密的事情,这可能不是一个大问题,但这是一个额外且不必要的风险。就这样。当然,从技术角度来看,您可以这样做(而不是某些答案中的 php mail() 函数)。我看不出为什么经典方法会更难完成。
【解决方案3】:

您必须使用 mailto: 链接在用户计算机上启动默认电子邮件应用程序,因为如果您从您的网站发送电子邮件,您将不知道发件人地址。但是如果用户没有安装电子邮件应用程序怎么办?例如,用户使用 Gmail 等网络邮件?这在这种情况下是行不通的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 2011-07-06
    • 2018-12-08
    • 1970-01-01
    相关资源
    最近更新 更多