2012-01-14 71 views
1

我对验证电子邮件有一些不同意见,而不是发送一封邮件给我的客户,邮件内容与我的服务器进行验证,我不会发送给他任何邮件给我,然后我检查发件人和邮件中的唯一邮件并验证该邮件。电子邮件验证新想法

基本上,用户将点击一个按钮,一个新的邮箱将打开,所有的数据已经填入,他将不得不做的是按发送。

我的问题是:首先可以这项工作?其次,与官方的方式相比,它有多么的安全。我只想知道我是否没有开启任何新的安全风险。

+0

首先我会问你知道PHP吗?它非常简单地用PHP完成。 – 2012-01-14 16:36:53

+0

你确定你了解我的问题吗?我需要一个可以读取eMails的托管服务的实现。如果你有一个在PHP中实现它的例子,我会更加勇敢地看看它。 – 2012-01-14 16:42:03

+0

我认为这是不安全的,并且容易通过[电子邮件欺骗](http://en.wikipedia.org/wiki/Email_spoofing)绕过。你可能会争辩说,有可能保护你自己,并以某种方式发现电子邮件是否从正确的服务器发送 - 但最终为什么你的解决方案比现在更容易或更好? – olli 2014-10-18 00:25:03

回答

1

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

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

原来的一个:你通过邮件发送一个URL,如果它打开你激活用户。逻辑可以用一个简单的servlet来实现。你可以在URL中加密用户的数据库条目,并且为servlet留下的只是一个简单的数据库查找。

你的一个:你通过邮件收到标识并通过邮件运行你的逻辑。

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

+1

我的解决方案更好,因为发送邮件花费金钱,阅读不是......但你确实有一点。我的邮件确实可能是恶意用户的垃圾邮件。我怎么能想到这个解决方案。也许我会为每个用户请求创建临时邮件,并在收到第一封邮件或超时后关闭它。 – 2012-01-14 17:01:22

-1

我会后你的代码:

$username = $_POST['username']; //This is your clients username 
$id = $_POST['id']; // This is your client's id 
$email = $_POST['email']; // Your user's email. 

$yemail = ""; //Here type an email where you want user to send you a notification. 

,然后使用PHP mail()函数,就是这样。

1

嗯,我看到这里有一点可用性问题和另一个安全问题。让我们来谈谈这既是为了:

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

  • 安全问题。如果用户注册并在注册和电子邮件确认之后又有人发送了邮件呢?

+0

我将创建一个带有mailKey和电子邮件地址的数据库,并要求我的用户向我发送mailKey。一旦我得到密钥,我就把存储在我的数据库中的邮件取出来,并将其与发件人邮件进行比较,如果我有匹配的话,我会将这封邮件标记为已验证! – 2012-01-14 16:50:16

+0

让我们假设有一个人想要伤害你的未来用户。他可以通过拦截网页(如果不是https)或检查用户的浏览器缓存等来获取该唯一密钥。一旦通过Internet未加密地发送某些内容并将其显示在浏览器中,则可能是安全问题。如果你的网站不会做超秘密的东西,它可能不是一个大问题,但它是一个额外的和不必要的风险。就这样。当然,从技术的角度来看,你可以做到这一点(而不是用一些答案中的php mail()函数)。我看不出为什么经典的方式会更难完成。 – 2012-01-14 17:00:45

0

你将不得不使用mailto:链接启动用户计算机上的默认电子邮件应用程序,因为如果你会从您的网站发送电子邮件,你不会知道发件人地址。但是如果用户没有安装电子邮件应用程序呢?例如,用户使用Gmail等webmail?这在这种情况下不起作用。