【问题标题】:How is email verification by clicking a received link implemented?如何通过单击收到的链接进行电子邮件验证?
【发布时间】:2021-10-29 14:53:28
【问题描述】:

我使用 parse-server,以前是 parse.com 作为我应用程序的后端。这很简单,我永远不需要担心电子邮件验证的实际处理方式。

但我注意到发送到用户电子邮件地址的验证链接会打开一个纯 html 网页,该网页没有 JavaScript 或任何与后端通信的内容。

<!DOCTYPE html>
<html>
  <!-- This page is displayed whenever someone has successfully reset their password.
       Pro and Enterprise accounts may edit this page and tell Parse to use that custom
       version in their Parse app. See the App Settigns page for more information.
       This page will be called with the query param 'username'
   -->
  <head>
  <title>Email Verification</title>
  <style type='text/css'>
    h1 {
      color: #0067AB;
      display: block;
      font: inherit;
      font-family: 'Open Sans', 'Helvetica Neue', Helvetica;
      font-size: 30px;
      font-weight: 600;
      height: 30px;
      line-height: 30px;
      margin: 45px 0px 0px 45px;
      padding: 0px 8px 0px 8px;
    }
  </style>
  <body>
    <h1>Successfully verified your email!</h1>
  </body>
</html>

所以我想知道服务器是如何跟踪链接确实被点击和验证的。他们如何在不将一些数据发送回服务器的情况下实现这一目标?

http://blog.parse.com/announcements/introducing-app-email-settings/

Parse.com 的博客没有解释其背后的机制。 请帮助我好奇的心,非常感谢。

【问题讨论】:

  • 那是您看到的响应页面(甚至可能是重定向的结果),这不是您单击的链接(其中将包含某种标记,当单击时与“待定”匹配' 在服务器端生成的状态令牌)。
  • 他们如何在不将一些数据发送回服务器的情况下实现这一目标?” - 点击一个链接已经向服务器发送了一些东西(一个 HTTP 请求)。跨度>
  • 确实如此,不敢相信我错过了 HTTP 请求。谢谢。

标签: javascript parse-platform


【解决方案1】:

验证发生在服务器上。因此,您在提供给客户端的页面中看不到任何 JavaScript。

您可以使用服务器上安装的语言验证电子邮件; PHP、JavaScript、Python 等

因此,假设用户向您的应用提交了他的电子邮件地址,您将向他发送一封带有验证链接的邮件。 该链接有一个参数来再次识别用户。在这种情况下,您可以使用电子邮件地址的哈希值 例如www.mysite.com/email-verification-script/?user={a-hashed-value-of-the-mail}. 然后用户点击链接。验证脚本评估参数“用户”是否有效。 (该用户是否在系统中,可以验证该用户吗?) 如果是这样,email-verification-script 将用户设置为已验证并重定向到成功消息页面。 如果找不到用户,则显示错误消息。

【讨论】:

  • 非常感谢您的回答!那么服务器是否会通过检查它收到的 HTTP 请求来跟踪链接的打开,其中包含经过哈希处理的用户电子邮件?
  • 有不同的实现方式。一种是使用用户的电子邮件生成单向哈希,然后在脚本中进行检查。但是,散列可以被破解(许多旧的被认为是损坏的,例如 md5),特别是如果攻击者能够使用多个电子邮件地址收集数据,这在大多数 Web 应用程序中通常很容易。更安全的方法是使用安全随机数生成来生成唯一代码并将其存储在数据库中,然后对照电子邮件进行检查。
猜你喜欢
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 2015-03-15
  • 2020-04-26
  • 1970-01-01
  • 2018-09-14
相关资源
最近更新 更多