javascript - Node js - 如何安全地将 token 从 http get 请求传递到 html 页面?

标签 javascript html node.js security passwords

我正在努力实现我自己的自定义密码重置,该重置会发送一封电子邮件,用户将在其中访问一个页面来重置其密码。

到目前为止,我已经生成了一个唯一的 token ,该 token 被放入 http get 请求链接中并通过电子邮件发送给用户。

当用户单击链接时(例如 mywebsite.com/verifypasswordreset?id=96rZyAWLTu)

我有一条获取 token 的快速路线:

//Verify Password Reset
app.get('/verifypasswordreset', function(req, res) {
    Parse.Cloud.run('verifyPasswordReset', { token: req.param("id") }, {
      success: function(user) {   
          res.sendFile(path.join(__dirname + '/website/resetpassword.html'));
      },
      error: function(error) {
          res.sendFile(path.join(__dirname + '/website/404.html'));
      }
    }); 
});

然后,我运行一个 Parse 云代码函数来验证 token 是否存在,如果存在,它会通过发送包含用于重置密码的表单的 html 进行响应。 (resetpassword.html)

此时,resetpassword.html 页面的网址中仍然嵌入了 token (mywebsite.com/verifypasswordreset?id=96rZyAWLTu),但是,一旦用户提交表单,它就会执行 http post 并发布新密码,将 token 留在链接中,因此我不知道哪个 token 与密码重置相关联?

//Reset Password
app.post('/resetpassword', function(req, res) {
    res.send('You sent the password "' + req.body.password + '".');
});

当用户提交表单以更改密码时,如何以某种方式从当前网址 (mywebsite.com/verifypasswordreset?id=96rZyAWLTu) 获取 token 并将其包含在 http post 请求中,以便我的 Node js 应用程序可以读取它并知道哪个 token 与密码重置相关联?

或者,他们是跟踪 token 的更好、更安全的方式吗?

*注意忽略我正在使用 http,我将购买 SSL 证书并在启动前使用 https。

最佳答案

当您只是发送resetpassword.html 页面时,我不认为验证 token 有什么意义。但是,在实际更新用户密码时必须验证 token 。因此,这里有一个稍微修改过的工作流程:

用户单击链接(例如 mywebsite.com/passwordreset?id=96rZyAWLTu)

app.get('/passwordreset', function(req, res) {
      res.sendFile(path.join(__dirname + '/website/resetpassword.html'));
});

您的重置密码页面的 URL 仍嵌入了 token 。现在,用户提交表单,它会执行 http post 并发布新密码。

app.post('/passwordreset', function(req, res) {
Parse.Cloud.run('verifyPasswordReset', { token: req.param("id") }, {
  success: function(user) {   
           //update user's password here
           res.send('You sent the password "' + req.body.password + '".');
  },
  error: function(error) {
      res.sendFile(path.join(__dirname + '/website/error.html'));
  }
}); 

关于javascript - Node js - 如何安全地将 token 从 http get 请求传递到 html 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36936330/

相关文章:

javascript - 异步方法总是返回未定义

javascript - 对象中 console.log() 的奇怪行为

javascript - 如何计算两个日期之间的年数?

javascript - 如何使用 Knockout 中的下拉列表进行过滤

html - 如何创建一个未嵌套的 IE11 媒体查询?

html - 在 ios swift 中加载 html 字符串,UIWebView 除外

javascript - 如何仅获取与特定值匹配的json

javascript - 第一次使用 API。感觉我可以更简单地显示图像,但不知道如何

javascript - 将回调函数与 doument 对象一起使用

html - 如何在响应式网页中对齐图像上的文本